javascript - 将原始数组与深度克隆进行比较,不起作用

标签 javascript arrays object clone

我正在尝试测试数组的深度克隆是否与原始对象相同(可用 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/

相关文章:

javascript - 虚拟表自动高度的三元运算符

javascript - 转换嵌套对象

javascript - 如何在 JavaScript 中获取单词或索引后的子字符串?

java - 修改数组列表中的某个元素

javascript - 使用数组或 JSON 来跟踪唯一列表

javascript - 获取多维数组中具有最大值的行

javascript - 单击时呈现组件的问题

arrays - Angular 2中的forEach循环

复制文件到 windir c

java - 如何查找数组中目标值的每次出现并返回包含这些值索引的新数组? java