我有两个数组: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)
??
感谢您的见解。
答案 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]