当数组只有1个元素时,为什么array.splice()不起作用?

时间:2017-03-08 20:18:20

标签: javascript arrays reduce

这是预期的行为吗?我希望在这里返回一个空数组。

的JavaScript

let arr = [1];
console.log(arr.splice(0, 1))

控制台

1

3 个答案:

答案 0 :(得分:9)

因为它返回被删除的内容,在你的情况下是[1]。通话结束后,arr将为空。

参见示例:



let arr = [1];
arr.splice(0, 1);
console.log(arr);




答案 1 :(得分:1)

Array.prototype.splice()返回已删除元素的数组。

您正在记录操作的返回值而不是数组的当前状态。

答案 2 :(得分:1)

  

splice()方法通过删除来更改数组的内容   现有元素和/或添加新元素。   Reference

此方法的语法是:

array.splice(start)
array.splice(start, deleteCount)
array.splice(start, deleteCount, item1, item2, ...)

您正在使用第二种语法并将0作为开始,将1作为deleteCount传递,这意味着您要从第0个索引开始并删除1个项目(而不是1作为值数组)。

此方法返回包含已删除元素的数组。如果仅删除一个元素,则返回一个元素的数组。如果没有删除任何元素,则返回一个空数组。

因此,在这种情况下,结果为[1],即值为1的数组,即您刚删除的项目。