Uncaught TypeError: невозможно прочитать свойство undefined JSON - PullRequest
0 голосов
/ 14 июля 2020

Я работаю над извлечением данных из объекта json, а затем отображаю информацию в интерфейсе пользователя. Как лучше всего обернуть приведенный ниже код, чтобы проверить, не определена ли переменная SKU или недоступна, а затем вообще не запускать код.

В Google Chrome я получаю Uncaught TypeError: Cannot прочтите свойство 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");
}

Однако этот код ниже работает

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",
   }
}

1 Ответ

0 голосов
/ 14 июля 2020

Сначала необходимо проверить наличие артикула в объекте, если нет, добавить чек. Кажется, ваш код работает (вы можете увидеть ниже)

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');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...