当前位置: 首页 > 面试题库 >

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

宁侯林
2023-03-14
问题内容

我需要复制对象的(有序的,而不是关联的)数组。我正在使用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]_而不是值。

同样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]]


 类似资料:
  • 本文向大家介绍JavaScript 数组的深度复制解析,包括了JavaScript 数组的深度复制解析的使用技巧和注意事项,需要的朋友参考一下 对于javascript而言,数组是引用类型,如果要想复制一个数组就要动脑袋想想了,因为包括concat、slice在内的函数,都是浅层复制。也就是说,对于一个二维数组来说,用concat来做复制,第二维的数组还是引用,修改了新数组同样会使旧数组发生改变。

  • 问题内容: 我想创建一个1D NumPy数组,该数组由另一个1D数组的1000个背对背重复组成,而无需将数据复制1000次。 可能吗? 如果有帮助,我打算将两个数组都视为不可变的。 问题答案: 你做不到 NumPy数组在每个维度上必须具有一致的步幅,而您的步幅在大多数情况下需要采用一种方式,但有时会向后跳。 您可以获得的最接近的结果是一个1000行的2D数组,其中的每一行都是您第一个数组的视图,或

  • 我想检查我的数组是否包含值输入,我想要类似的东西,有人知道如何做吗?

  • 如何使用JQuery获取以下URL的第三个URL段? 和 我想从上面提到的URL的uri护士

  • 问题内容: 我正在尝试复制嵌套列表,但是 不 使用该函数不知道该如何做。 我用了: 和 但事实证明,它们全都是浅表。 有什么提示吗? 问题答案: 我的模拟输入: 策略:遍历传入对象的每个元素,递归地下降到也可迭代的元素中,并创建相同类型的新对象。 无论它是全面的还是没有错误的,我都不会提出任何主张[1](不要传递引用自己的对象!),但是应该让您入门。 [1]真的!这里的重点是演示,而不是涵盖所有可

  • 我在尝试反转数组时遇到麻烦,它一直在打印这条消息,您可以帮助找出我做错了什么吗? 如果输入为: 则输出为: