所以我注意到当我使用Array.splice()时,它就像我使用Array.slice(),
所以当我输入[0, 1, 2, 3].splice(0, 2)
时,它会返回[0, 1]
? (是的,我很高兴我打字splice
而不是slice
)
基本上:
[0, 1, 2, 3, 4, 5].splice(0, 2);
returns [0, 1]?
[0, 1, 2, 3, 4, 5].splice(3, 1);
returns [3]?
[0, 1, 2, 3, 4, 5].slice(0, 2);
returns [0, 1]
[0, 1, 2, 3, 4, 5].slice(3, 1);
returns [3]
为什么会这样? 它应该删除指定的对象吗?
答案 0 :(得分:0)
slice
获取数组的一部分副本并将其返回。
splice
删除数组的一部分并返回它。可选参数也允许将这些元素替换为其他元素。
答案 1 :(得分:0)
splice 方法会修改您要调用的数组的内容。
splice()方法通过删除来更改数组的内容 现有元素和/或添加新元素。
然而, slice 方法从给定的索引范围返回新的数组副本。
slice()方法返回数组部分的浅表副本 进入一个新的数组对象。
答案 2 :(得分:0)
它返回相同的东西,当然,除了slice不会改变原始数组。 另一方面,Splice返回从原始数组中删除的内容。
答案 3 :(得分:0)
splice()
将项目替换为其他项目,更改输入数组。slice()
只需从数组中获取而不需要更改它。由于您未使用变量作为输入,因此您永远不会看到差异。但试试这个:
a = [4, 5, 6, 7, 8]
> [4, 5, 6, 7, 8]
a.splice(2, 2)
> [6, 7]
a
> [4, 5, 8]
a
已发生变化。这是splice()
真正的力量来自替代/替代:
a = [3, 4, 5, 6, 7]
> [3, 4, 5, 6, 7]
a.splice(2, 2, 500, 600)
> [5, 6]
a
> [3, 4, 500, 600, 7]
如果您有一系列项目要拼接'进入数组,你必须使用.apply
:
a = [3, 4, 5, 6, 7]
> [3, 4, 5, 6, 7]
b = [500, 600]
> [500, 600]
a.splice.apply(a, [2, 2].concat(b))
> [5, 6]
a
> [3, 4, 500, 600, 7]
或者使自己的功能更具可读性。
您还可以通过将第二个参数设为0:a.splice(2, 0, 500, 600)
来将项目拼接添加到数组中。