改变object的内容,之前添加的数组元素也被修改,达不到我想要的效果
代码:
let myobject={
hasshop:true,
selectStore:true,
cart:[],
};
for(let i = 0; i < mydata.shop_array.length;i++){
myobject.name=mydata.shop_array[i];
for (let j = 0; j < mydata["" + mydata.shop_array[i] +""].length;j++){
let mycart = mydata["" + mydata.shop_array[i] + ""][j];
mycart.selected=true;
myobject.cart.push(mycart);
}
myarray.push(myobject);
}
},
对象置空不行,因为在js中直接对对象赋值是浅拷贝,是引用原对象的值,你对对象进行操作,数组的值也会被改变,解决方法是在循环内部定义一个对象,深拷贝原对象,再将新定义的对象push到数组中去
push了以后对象置空
谢谢,发出来的时候也刚好想到了
这是 JS 语言本身的特性,如果不想数组元素被修改,可以在 push 时将该对象拷贝一份。