在javascript中链接多个数组方法

在javascript中链接多个数组方法,javascript,arrays,Javascript,Arrays,我试图在数组中链接多个方法 原始阵列: 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); 这行不通。为什么? 因为this.array.splice(0,0,10)将返回一个新数组(包含已删除的元素-在本例中为空数组,因为未删除任何

我试图在数组中链接多个方法

原始阵列:

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);
这行不通。为什么?


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

在本例中,您使用的是原始阵列的克隆,因此失去了对克隆实例的引用

因此
this.array.slice(0)
将返回执行
.splice(0,0,10)
的克隆(它将更新克隆对象),但是
splice
操作将返回一个新的数组(带有已删除的对象),而不是克隆实例,因此我们取消了对它的引用

因此,解决方案是使用一个temp引用,如

var tmp = this.array.slice(0);
tmp.splice(0, 0, 10)

它不起作用,因为第二个
拼接
将对第一个的返回值和
数组的返回值进行操作。拼接()
是一个包含已从原始数组中删除的元素的新数组


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

组合是有效的。但是您没有存储调用的结果,所以您无法看到它。@hindmost我看到了。有没有办法让
splice
在克隆的实例上运行而不创建其他阵列?array.slice正在克隆原始阵列。不应该在克隆阵列上执行拼接吗?如何保持对克隆实例的引用?通过创建临时数组?