我正在尝试测试数组的深度克隆是否与原始对象相同(可用 jQuery)。
这是我克隆它的方法
self.slides = jQuery.extend(true, {}, parent.modules[self.moduleId].composed);
但是,我最终得到了两个略有不同的对象,因此即使我关心的实际内容是相同的,这两个对象也不是相同的。如果我将它们转储到 Chrome 控制台中,它们的外观如下:
原始对象:
[Object]
0: Object
length: 1
__proto__: Array[0]
克隆:
Object {0: Object}
0: Object
__proto__: Object
因此,克隆实际上似乎是一个对象(或对象类型的对象),而原始对象似乎是一个数组(或数组类型的对象)。
是否有其他克隆方法或如何执行此相同测试?
最佳答案
克隆任何对象的最简单方法是
var array1 = [1, [2], 3];
var array2 = JSON.parse(JSON.stringify(array1));
你可以这样检查它们
console.log(array1, array2);
// [ 1, [ 2 ], 3 ] [ 1, [ 2 ], 3 ]
array1[1][0] += 3;
console.log(array1, array2);
// [ 1, [ 5 ], 3 ] [ 1, [ 2 ], 3 ]
关于javascript - 将原始数组与深度克隆进行比较,不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22041307/