JavaScript 中的 splice()
方法是一个非常强大的数组方法,它主要用于向数组中添加或删除项目,并返回被删除的项目组成的新数组(如果没有删除项,则返回一个空数组)。这个方法会改变原数组。
基本语法
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
start
:指定修改的开始位置(如果超出了数组的长度,则会从数组末尾开始添加内容;如果是负值,则表示从数组末尾开始的第几位,例如,-2 表示数组倒数第二个元素)。deleteCount
(可选):整数,表示要移除的数组元素的个数。如果deleteCount
被省略了,或者其值大于等于array.length - start
(也就是说,如果它太大),那么从start
后面的所有元素都会被删除(即从start
到数组结束)。如果deleteCount
是 0 或负数,则不会删除元素。这种情况下,至少应添加一个新元素。item1, item2, ...
(可选):要添加进数组的元素,从start
位置开始。如果不指定,则splice()
将只删除数组元素。
返回值
返回一个由被删除的元素组成的新数组,如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除元素,则返回空数组。
示例
添加元素
let myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
let removed = myFish.splice(2, 0, 'drum');
// myFish 现在是 ['angel', 'clown', 'drum', 'mandarin', 'sturgeon']
// removed 是一个空数组,因为没有元素被删除
删除元素
let myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon'];
let removed = myFish.splice(2, 1);
// myFish 现在是 ['angel', 'clown', 'mandarin', 'sturgeon']
// 被删除的元素在 removed 中: ['drum']
替换元素
let myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon'];
let removed = myFish.splice(2, 1, 'trumpet');
// myFish 现在是 ['angel', 'clown', 'trumpet', 'mandarin', 'sturgeon']
// 被删除的元素在 removed 中: ['drum']
注意事项
splice()
方法会直接修改原数组。- 如果
start
加上deleteCount
大于等于数组的长度,则不会删除任何元素,只会添加元素(如果指定了的话)。 - 如果
deleteCount
被省略或大于start
之后的元素总数,则从start
后面的所有元素都将被删除。 - 如果
start
是负数,则表示从数组末尾开始的第几位。例如,-2 表示数组倒数第二个元素。