我该如何修复这个 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