当数组只有 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
的数组,这是您刚刚删除的项目。
这是有意为之的行为吗?我希望这里返回一个空数组。
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
的数组,这是您刚刚删除的项目。