M0(日常)-05-Vue报错Uncaught (in promise) TypeError: Cannot read properties of null (reading ‘forEach‘)

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值