当我制作一个包含对象的数组切片时,新数组仍然具有对初始数组中对象的引用。如何制作带有对象副本的切片?
var obj1 = {name: 'object1'};
var obj2 = {name: 'object2'};
var array = [obj1, obj2];
var arraySlice = array.slice(0, 1);
arraySlice[0].name = 'object1RENAMED';
console.log(array[0].name);
console.log(arraySlice[0].name);
打印:
object1RENAMED
object1RENAMED
最佳答案
在我们的例子中,您对值有相同的引用(值是对象),这就是您可以更改不同数组中的值的原因。您需要创建深度克隆/副本:
var arraySlice = JSON.parse(JSON.stringify(array.slice(0, 1)));
如果你使用 jQuery,你可以这样做
var arraySlice = $.extend(true, [], array.slice(0, 1));
关于javascript - 对包含对象的数组进行切片并获取包含对象副本的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27619849/