开发者问题收集

我该如何修复这个 javascript foreach 错误?

2020-03-04
567

我有一个

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个回答

您可以使用 可选链 轻松解决此问题。只需在嵌套的 forEach 前添加一个问号,如下所示:

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

注意:如链接文档的兼容性部分所述,并非所有浏览器都支持可选链,因此您可能需要使用转译器(如 Babel)

Jon Warren
2020-03-04

有时你的对象可能 未定义 ,所以你应该验证键是否存在:

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);
    });
  }

});
Aziz.G
2020-03-04