在javascript中链接多个数组方法

时间:2015-07-30 10:03:42

标签: javascript arrays

我正在尝试在Array中链接多个方法。

原始阵列:

this.array = [1, 2, 3, 4, 5, 6];

克隆:

this.array.slice(0);

更改第一个元素

this.array.splice(0, 0, 10);
  

单独运行这些。

结合两者:

this.array.slice(0).splice(0, 0, 10);
  

这不起作用。为什么呢?

2 个答案:

答案 0 :(得分:2)

因为this.array.splice(0, 0, 10);将返回一个新数组(包含已移除的元素 - 在本例中为空数组,因为没有删除任何元素),而不是调用它的源数组。

在您使用原始数组的克隆时,您将丢失对克隆实例的引用。

因此this.array.slice(0)将返回执行.splice(0, 0, 10)的克隆(它将更新克隆的对象),但splice操作将返回一个新数组(带有已删除的对象)克隆的实例,所以我们不参考它

所以解决方案是使用像

这样的临时引用
var tmp = this.array.slice(0);
tmp.splice(0, 0, 10)

答案 1 :(得分:0)

它不起作用,因为第二个splice将对第一个的返回值进行操作,而array.splice()的返回值是一个新数组,其中包含已从中删除的元素原始阵列。

简而言之,array.splice()不适合以这种方式链接。