Uncaught TypeError: Cannot read property of undefined JSON

Uncaught TypeError: Cannot read property of undefined JSON

我正在从 json 对象中提取数据,然后在前端显示信息。包装下面的代码以检查变量 SKU 是否未定义或不可用的最佳方法是什么,然后根本没有 运行 代码。

在 Google Chrome 上,我得到一个未捕获的类型错误:无法读取 属性 “dm” of undefined 基于下面的代码。

var SKU = "556520000";
var dimBreak = obj[SKU]["dm"];
for(var i = 0; i < dimBreak.length; i++){
    const dimAll = dimBreak[i];
    let entries = Object.entries(dimAll);
    
    for(const [prop, val] of entries) {
        console.log(prop, val);
    }
}

感谢您的帮助。


基于下面的评论

我试过下面给出了与上面相同的错误。

var dimBreak = obj[SKU]["dm"];
console.log(dimBreak);

if(typeof dimBreak === 'undefined') {
    console.log("Is undefined");
} else {
    console.log("Is defined");
}

下面这段代码不过运行s

var dimBreak = "Test";
console.log(dimBreak);

if(typeof dimBreak === 'undefined') {
    console.log("Is undefined");
} else {
    console.log("Is defined");
}

使用的对象

{
   "556520000":{
      "lmin":"35",
      "dm":[
         {
            "Width":"147"
         },
         {
            "Depth":"10"
         },
         {
            "Height":"137"
         }
      ],
      "lmax":"68",
   }
}

首先您必须检查对象中是否存在 SKU,如果不存在则添加检查。您的代码似乎可以正常工作(您可以在下面看到)

var obj = {
   "556520000":{
      "lmin":"35",
      "dm":[
         {
            "Width":"147"
         },
         {
            "Depth":"10"
         },
         {
            "Height":"137"
         }
      ],
      "lmax":"68",
   }
}

var SKU = "556520000";
if(obj[SKU]){
  var dimBreak = obj[SKU]["dm"];
  for(var i = 0; i < dimBreak.length; i++){
      const dimAll = dimBreak[i];
      let entries = Object.entries(dimAll);

      for(const [prop, val] of entries) {
          console.log(prop, val);
      }
  }
} else {
  console.log(SKU+' is not defined');
}