嗨我知道这个主题已经在之前的帖子中有所涉及,但我仍然没有得到我需要的结果。我试图做一个对象数组的副本,这些副本将是它自己的原始版本,并且在进行更改时不会影响彼此的数据。到目前为止,当我使用slice()而不是对象的向量时,复制一个int数组工作正常。在另一篇文章中提到,对象向量上的slice()仍然会引用对象,所以有没有办法按值只做???感谢。
property var array: new Array
Rectangle{id: ob1; width:50; height:50; color: "red"; property int num: 1}
Rectangle{id: ob2; width:50; height:50; x: 50; color: "blue"; property int num: 2}
Rectangle{id: ob3; width:50; height:50; x: 100; color: "green"; property int num: 3}
Component.onCompleted: {
array.push(ob1)
array.push(ob2)
array.push(ob3)
var array2 = array //slice() will not work here
array[1].num = 1111 //change made to first array NOT intended for second
for(var i = 0; i < array.length; i++){
console.log(array2[i].num) //print out from second array still shows changes to first...
}
}
答案 0 :(得分:1)
您可以这样做:
var copyOfValues = listOfValues.map(function (value) {
return $.extend({}, value);
});
答案 1 :(得分:0)
你确定array.slice(0)不能正常工作吗?如果没有试试这个:
var array2 = JSON.parse(JSON.stringify(array));