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

Why doesn't array.splice() work when the array has only 1 element?

这是有意为之的行为吗?我希望这里返回一个空数组。

JavaScript

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

控制台

1

因为它 returns 删除了什么,在您的情况下是 [1]。 arr调用后为空

参见示例:

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

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

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

The splice() method changes the contents of an array by removing existing elements and/or adding new elements. Reference

这个方法的语法是:

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

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

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

所以,在这种情况下,结果是 [1],即一个值为 1 的数组,这是您刚刚删除的项目。