这里报错是因为遍历的数组为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之前要先给数组进行非空判断。

Logo

前往低代码交流专区

更多推荐