在vue项目中有一个表格操作,要对数字数据进行循环 我采用了forEach ,但是突然之前报错了,经过查找报错原因:forEach是一种array...确定是一个数组才能使用
原代码是这样写的:
formateTableData() {
const data = cloneDeep(this.tableData);
data.forEach((item) => {
console.log(item);
item.dataList &&
item.dataList.forEach((itemr) => {
itemr.liveName = itemr.userName;
});
});
const newData = data.map((e) => {
if (e.dataList) {
const item = {
_showChildren: true,
children: cloneDeep(e.dataList),
...e,
};
delete item.dataList;
return item;
}
return e;
});
return this.addIdToCategory(newData);
},
},
解决办法:
1)改为for in 遍历的方式
2)在外一层if判断,当data存在为数组的时候再遍历,如下
3) 在循环前面添加data&& (如下)也和方法2一样的效果 写起来更加简便
formateTableData() {
const data = cloneDeep(this.tableData);
data &&
data.forEach((item) => {
console.log(item);
item.dataList &&
item.dataList.forEach((itemr) => {
itemr.liveName = itemr.userName;
});
});
const newData = data.map((e) => {
if (e.dataList) {
const item = {
_showChildren: true,
children: cloneDeep(e.dataList),
...e,
};
delete item.dataList;
return item;
}
return e;
});
return this.addIdToCategory(newData);
},
},