这里报错是因为遍历的数组为null了,如果当前遍历的数组是null再使用forEach遍历就会报错。
举例来说,如下有一个需求,从后端获取到的data.data中有一个attrs数组,该数组存放的属性,需要遍历后给全局attrArray数组push。
改造前的代码:
//先对表单的baseAttrs进行初始化
data.data.forEach((item) => {
console.log("showBaseAttrs-item:", item);
let attrArray = [];
item.attrs.forEach((attr) => {
console.log("showBaseAttrs-attr:", attr);
attrArray.push({
attrId: attr.attrId,
attrValues: "",
showDesc: attr.showDesc,
});
});
由于有的item没有属性即attrs为null,这里就报错了。所以可以在遍历attrs属性之前做一个非空判断,即
//先对表单的baseAttrs进行初始化
data.data.forEach((item) => {
console.log("showBaseAttrs-item:", item);
let attrArray = [];
//加一层非空判断
if (item.attrs) {
item.attrs.forEach((attr) => {
console.log("showBaseAttrs-attr:", attr);
attrArray.push({
attrId: attr.attrId,
attrValues: "",
showDesc: attr.showDesc,
});
});
}
总结-在使用forEach之前要先给数组进行非空判断。