如何修复此javascript foreach错误?
我有一个物体是如何修复此javascript foreach错误?,javascript,arrays,reactjs,list,object,Javascript,Arrays,Reactjs,List,Object,我有一个物体是 res = { 2019: [ {id: 1, points: 435}, {id: 830, points: 230}, ... ] } 而一系列的季节仅仅是几年=>[“2015年”、“2016年”、“2019年”] 上面被剪断的部分正确地记录了每个结果,但是我仍然得到这个错误:未处理的拒绝(TypeError):无法读取未定义的属性“forEach”有时您的对象可能是未定义的,因此您应该验证密钥是否存在: const ob=res={ 2015: [{ id:1, 点数
res = { 2019:
[
{id: 1, points: 435},
{id: 830, points: 230},
...
]
}
而一系列的季节仅仅是几年=>[“2015年”、“2016年”、“2019年”]
上面被剪断的部分正确地记录了每个结果,但是我仍然得到这个错误:未处理的拒绝(TypeError):无法读取未定义的属性“forEach”有时您的对象可能是未定义的,因此您应该验证密钥是否存在:
const ob=res={
2015: [{
id:1,
点数:435
},
{
id:830,
积分:230
},
],
2019: [{
id:1,
点数:435
},
{
id:830,
积分:230
},
]
}
施工季节=[“2015”、“2016”、“2019”]
季节。forEach(季节=>{
if(res[季节]){
res[季节].forEach(项目=>{
控制台日志(项目);
});
}
});代码>您可以使用来轻松解决此问题。只需在嵌套的forEach
前面添加一个问号,如下所示:
seasons.forEach(季节=>{
res[季节]?.forEach(项目=>{
控制台日志(项目);
});
});
注意:如链接文档的兼容性部分所述,可选链接尚未被所有浏览器支持,因此您可能希望使用transpiler(如Babel)是否确定已定义每个res[seasure]
?尝试了类似于(res[seasure]| |[])的操作。forEach(…)
?错误很明显,您试图调用未定义的forEach
。有两个地方尝试了一个forEach
,你检查过了吗?我尝试了res[2019]和res[“2019”]仍然是相同的结果。使用常规for循环temp[2019][i]我得到temp[2019]。长度没有定义一个简单的检查奇怪地完成了这个任务。即使res明确地包含我代码的另一部分中的每个季度。未处理拒绝
如果您使用一些异步方法,您是否确保在实际检索数据之前等待?谢谢,这很奇怪。我上面有一些代码,它将一个包含多年的对象显式映射到res,并记录下来,没有问题,但如果不进行此检查,我将得到错误。仍然不知道为什么,因为它只包含了季节中已经存在的年份。谢谢,我甚至不知道这个方法存在。
seasons.forEach(season => {
res[season].forEach(item => {
console.log(item);
});
});