当我使用Array.splice()时,它就像我使用Array.slice()?

时间:2015-11-24 21:39:00

标签: javascript arrays

所以我注意到当我使用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]

为什么会这样? 它应该删除指定的对象吗?

4 个答案:

答案 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)来将项目拼接添加到数组中。

You can read all this, and more, in the docs!