(Deep)使用jQuery复制数组
2022-08-30 00:45:13
可能的重复:
克隆JavaScript对象的最有效方法是什么?
我需要复制一个(有序的,而不是关联的)对象数组。我正在使用jQuery。我最初尝试过
jquery.extend({}, myArray)
但是,自然而然地,这给了我一个对象,我需要一个数组(顺便说一句,我真的很喜欢jquery.extend)。
那么,复制数组的最佳方法是什么?
可能的重复:
克隆JavaScript对象的最有效方法是什么?
我需要复制一个(有序的,而不是关联的)对象数组。我正在使用jQuery。我最初尝试过
jquery.extend({}, myArray)
但是,自然而然地,这给了我一个对象,我需要一个数组(顺便说一句,我真的很喜欢jquery.extend)。
那么,复制数组的最佳方法是什么?
由于Array.slice()不进行深度复制,因此它不适用于多维数组:
var a =[[1], [2], [3]];
var b = a.slice();
b.shift().shift();
// a is now [[], [2], [3]]
请注意,尽管我在上面已经使用过,但要点只是b[0][0]
包含指向a[0][0]
的指针而不是值。shift().shift()
同样也会导致被删除,并且还会将 的值更改为 99。delete(b[0][0])
a[0][0]
b[0][0]=99
a[0][0]
jQuery 的方法在将 true 值作为初始参数传递时执行深度复制:extend
var a =[[1], [2], [3]];
var b = $.extend(true, [], a);
b.shift().shift();
// a is still [[1], [2], [3]]
$.extend(true, [], [['a', ['c']], 'b'])
这应该为您完成。