我正在尝试在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);
这不起作用。为什么呢?
答案 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()
不适合以这种方式链接。