使用splice(0)复制数组。

25

我有两个数组: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)的时候做错了什么?感谢你的建议。

.splice().slice()有所不同... - Pointy
@sp00m:我喜欢帕斯卡命名法;我只是觉得它看起来更好。 - frenchie
2
@frenchie 我在谈论编程规范。PascaleNotation 用于类名,而 lowerCamelCase 则用于方法/函数以及变量/属性/属性名。 - sp00m
@sp00m:我知道有关规范,但我真的更喜欢帕斯卡命名法的外观。 - frenchie
3个回答

54
你需要使用slice()MDN文档),而不是splice()MDN文档)!
ArrayB = ArrayA.slice(0);

slice()方法不会改变原始数组,它只会创建一个复制。

另一方面,splice()方法会修改原始数组,插入或删除元素。


7

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


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]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接