使用splice(0)复制数组

fre*_*hie 19 javascript

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

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

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

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

ArrayB = ArrayA.splice(0);

alert(ArrayA.length);
Run Code Online (Sandbox Code Playgroud)

警报显示0.我做错了什么.splice(0)

感谢您的见解.

Sir*_*rko 36

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

ArrayB = ArrayA.slice(0);
Run Code Online (Sandbox Code Playgroud)

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

splice() 另一方面,只需通过插入或删除元素来修改原始数组.


Imp*_*Imp 5

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


Koo*_*Inc 5

您正在寻找slice

var a = [1,2,3,4,5]
   ,b = a.slice();
//=> a = [1,2,3,4,5], b = [1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

您可以使用splice,但它会破坏您的原始数组:

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