使用splice(0)复制数组

时间:2012-08-22 12:26:30

标签: javascript

我有两个数组:ArrayA和ArrayB。我需要将ArrayA复制到ArrayB(而不是创建引用)并且我一直在使用.splice(0)但我注意到它似乎从初始数组中删除了元素。

在控制台中,当我运行此代码时:

var ArrayA = [];
var ArrayB = [];

ArrayA.push(1);
ArrayA.push(2);

ArrayB = ArrayA.splice(0);

alert(ArrayA.length);

警报显示0 。我对.splice(0) ??

做错了什么

感谢您的见解。

3 个答案:

答案 0 :(得分:29)

您想使用slice()MDN docu)而不是splice()MDN docu)!

ArrayB = ArrayA.slice(0);

slice()保持原始数组不变,只创建一个副本。

另一方面,

splice()只需通过插入或删除元素来修改原始数组。

答案 1 :(得分:4)

splice(0)0开始抓取所有项目(即直到最后一个,即所有项目),从原始数组中删除并返回它们。< / p>

答案 2 :(得分:4)

您正在寻找slice

var a = [1,2,3,4,5]
   ,b = a.slice();
//=> a = [1,2,3,4,5], b = [1,2,3,4,5]

您可以使用splice,但它会销毁原始数组:

var a = [1,2,3,4,5]
   ,b = a.splice(0);
//=> a = [], b = [1,2,3,4,5]