小编典典

(深入)使用jQuery复制数组[重复]

javascript

我需要复制对象的(有序的,而不是关联的)数组。我正在使用jQuery。我最初尝试

jquery.extend({}, myArray)

但是,自然地,这给了我一个需要数组的对象(顺便说一句,真的很喜欢jquery.extend)。

那么,复制数组的最佳方法是什么?


阅读 592

收藏
2020-05-01

共1个答案

小编典典

由于Array.slice()不进行深度复制,因此它不适用于多维数组:

var a =[[1], [2], [3]];
var b = a.slice();

b.shift().shift();
// a is now [[], [2], [3]]

请注意,尽管我在shift().shift()上面使用过,但要点只是 _b[0][0] 包含指向的指针a[0][0]_而不是值。

同样delete(b[0][0])也将导致 a[0][0]删除,b[0][0]=99并将值更改a[0][0]为99。

当将true值作为初始参数传递时,jQuery的extend方法 执行深层复制:

var a =[[1], [2], [3]];
var b = $.extend(true, [], a);

b.shift().shift();
// a is still [[1], [2], [3]]
2020-05-01