_createProps: function (props){ let colProp = [], rowProp = [], propsAry = [], temp = []; if (props[0]){ props[0].childsCurGoods.forEach(function(n,i){ colProp.push({id:n.id,name:n.name,buyNum:0}); }); propsAry = colProp; if (props[1]){ props[1].childsCurGoods.forEach(function (n, i) { temp[i] = []; for (let j = 0; j < colProp.length;j++){ temp[i].push(colProp[j]); } rowProp.push({ id: n.id, name: n.name, child: temp[i]}) }); propsAry = rowProp; } } return propsAry; }```在小程序某一页面有这么一函数,目的是将一段数据过滤我需要的如下数据格式:res:[{ "id":1, "name":"www", "child":[ { "id":2, "name":"ssss", "buyNum":23 }, { "id":2, "name":"ssss", "buyNum":23 }, { "id":2, "name":"ssss", "buyNum":23 }, { "id":2, "name":"ssss", "buyNum":23 } ]}]现在的问题是我一改变其中一个一个对象中的chile的某个值,就会导致其他对象的child发生改变。比如我通过`res[0].child[0].buyNum = 3`,会导致res[0].child[1]、res[0].child[2]...中的buyNum的值都变成3。
2 回答
蛊毒传说
TA贡献1895条经验 获得超3个赞
很明显, 你写的并非深拷贝
luckness 说的Object.assign也只是解决了更深一层的引用, 如果你child里某个元素还有引用类型的属性, 这种情况依然会出现。
你这种的可以用JSON.parse(JSON.stringify(res))来实现
需要注意的是, 遇到值是类似function/RegExp这样的, 或是有循环引用的就不行了
添加回答
举报
0/150
提交
取消
