Как я могу исправить эту ошибку javascript foreach? - PullRequest
2 голосов
/ 05 марта 2020

У меня есть объект в виде

res = { 2019: 
[
{id: 1, points: 435},
{id: 830, points: 230},
...
]
}

и массив времен года, который составляет всего лишь несколько лет => ["2015", "2016", ... "2019"]

seasons.forEach(season => {
     res[season].forEach(item => {
     console.log(item);
   });
});

Приведенный выше фрагмент корректно регистрирует каждый результат, однако я все еще получаю эту ошибку: Необработанный отказ (TypeError): не удается прочитать свойство 'forEach' из неопределенного

Ответы [ 2 ]

3 голосов
/ 05 марта 2020

Вы можете использовать опциональную цепочку , чтобы легко решить эту проблему. Просто добавьте вопросительный знак перед вложенным forEach, например:

seasons.forEach(season => {
     res[season]?.forEach(item => {
     console.log(item);
   });
});

Примечание. Как уже упоминалось в разделе о совместимости связанной do c, необязательное сцепление еще не поддерживается всеми браузерами, так что вы можете использовать транспортер (например, Babel)

3 голосов
/ 05 марта 2020

Иногда ваш объект может быть undefined, поэтому вы должны проверить, существует ли ключ:

const ob = res = {
  2015: [{
      id: 1,
      points: 435
    },
    {
      id: 830,
      points: 230
    },
  ],
  2019: [{
      id: 1,
      points: 435
    },
    {
      id: 830,
      points: 230
    },
  ]
}

const seasons = ["2015", "2016", "2019"]

seasons.forEach(season => {
  if (res[season]) {

    res[season].forEach(item => {
      console.log(item);
    });
  }

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...