如何在javascript / vuejs中创建对象的副本
这个问题在这里已经有了答案:
您没有创建副本。 您正在将this.items
的引用分配给itemsCopy
数组。 因此,您稍后将对相同的数组进行变异。
创建一个副本:
itemsCopy = this.items.slice();
数组内的每个对象都有同样的问题。 在你的循环中,创建一个对象的副本:
var obj = Object.assign({}, itemsCopy[i]);
obj.text = "something";
itemsCopy[i] = obj; //replace the old obj with the new modified one.
演示:
var items = [
{text: 'text1', active: true},
{text: 'text1', active: true},
{text: 'text1', active: true}
];
function copyAndChange() {
var itemsCopy = []
itemsCopy = items.slice();
for (var i=0; i<itemsCopy.length; i++) {
var obj = Object.assign({}, itemsCopy[i]);
obj.text = "something";
itemsCopy[i] = obj; //replace the old obj with the new modified one.
console.log('text from items: ' + items[i].text)
console.log('text from itemsCopy: ' + itemsCopy[i].text)
}
return itemsCopy
}
copyAndChange();
链接地址: http://www.djcxy.com/p/24779.html