Обработка TypeError в a для l oop при вызове функции pu sh - PullRequest
0 голосов
/ 18 апреля 2020

Я работаю над соединителем веб-данных и в настоящее время борюсь с обработкой ошибки. WD C написано в Javascript. Теперь к моей проблеме. Допустим, API возвращает следующую JSON полезную нагрузку:

[
  {
    "type": "foo",
    "licensePlate": "bar",
    "mainEngine": null
  },
  {
    "type": "foo",
    "licensePlate": "bar",
    "mainEngine": {
      "fuelType" "fooBar"
    }
  }
]

Данные из API помещаются в таблицу с параметром для l oop. В следующем примере l oop:

// some code
for (var i = 0, len = jsonData.length; i < len; i++) {
  tableData.push({
    "type": jsonData[i].type,
    "licensePlate": jsonData[i].licensePlate,
    "fuelType": jsonData[i].mainEngine.fuelType
  });
}
// some code

Ошибка типа возникает из-за того, что jsonData [i] .mainEngine имеет значение null. Я думал об обёртывании for-l oop в блок try и catch, см .:

// some code
for (var i = 0, len = jsonData.length; i < len; i++) {
  try {
    tableData.push({
      "type": jsonData[i].type,
      "licensePlate": jsonData[i].licensePlate,
      "fuelType": jsonData[i].mainEngine.fuelType
  });
  } catch (e) {
      console.log("Epstein didn't kill himself")
    }

}
// some code

Теперь for l oop выполнится полностью, но данные не полностью помещены в таблицу , Для некоторых записей я мог заметить, что всякий раз, когда свойство fuelType равно нулю в таблице, свойства, такие как licensePlate, не заполняются правильно, то есть они полностью отсутствуют.

Большое спасибо!

1 Ответ

0 голосов
/ 18 апреля 2020
for (var i = 0, len = jsonData.length; i < len; i++) {
  tableData.push({
    "type": jsonData[i].type,
    "licensePlate": jsonData[i].licensePlate,
    "fuelType": jsonData[i].mainEngine && jsonData[i].mainEngine.fuelType
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...