Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复此javascript foreach错误?_Javascript_Arrays_Reactjs_List_Object - Fatal编程技术网

如何修复此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);
   });
});