我需要复制对象的(有序的,而不是关联的)数组。我正在使用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]]
请注意,尽管我在shift().shift()上面使用过,但要点只是 _b[0][0] 包含指向的指针a[0][0]_而不是值。
shift().shift()
b[0][0]
a[0][0]
同样delete(b[0][0])也将导致 a[0][0]删除,b[0][0]=99并将值更改a[0][0]为99。
delete(b[0][0])
b[0][0]=99
当将true值作为初始参数传递时,jQuery的extend方法 会 执行深层复制:
extend
var a =[[1], [2], [3]]; var b = $.extend(true, [], a); b.shift().shift(); // a is still [[1], [2], [3]]