array.splice(start, deleteCount, item1, item2, ...)
| 参数 |
类型 |
说明 |
start |
整数 |
修改起始位置(索引),从0开始计数。负数表示从数组末尾倒数,如-1表示最后一个元素位置。 |
deleteCount |
非负整数 |
从start开始,删除多少元素。如果为0,则不删除元素。可省略,默认删除到末尾。 |
item1, item2, ... |
任意值 |
可选,要插入到数组中的元素,插入位置是start索引处。可以插入0个、1个或多个元素。 |
1️⃣ 删除元素
array.splice(start, deleteCount);
- 从
start位置开始删除deleteCount个元素。
- 返回被删除的元素组成的新数组。
- 如果
deleteCount省略,则从start开始删除到末尾。
语法细节:
| 情况 |
说明 |
start >= array.length |
不删除,返回空数组 |
start < 0 |
转换为array.length + start,如果结果<0,则从0开始 |
deleteCount为0或负数 |
不删除任何元素,返回空数组 |
deleteCount大于剩余元素数 |
删除到数组末尾 |
2️⃣ 插入元素(不删除)
array.splice(start, 0, item1, item2, ...);
- 从
start位置开始,不删除元素,插入item1, item2, ...。
- 返回空数组,因为没删除任何元素。
start可以是负数,同删除规则。
3️⃣ 替换元素(删除+插入)
array.splice(start, deleteCount, item1, item2, ...);
- 从
start位置开始,删除deleteCount个元素。
- 同时插入
item1, item2, ...代替被删除元素。
- 返回被删除的元素数组。
4️⃣ 省略 deleteCount 参数
array.splice(start);
- 从
start开始删除直到数组末尾所有元素。
- 返回被删除元素数组。
5️⃣ 负数 start 参数的特殊处理
- 负数
start相当于array.length + start。
- 如
start = -1表示最后一个元素位置。
- 如果计算后
start < 0,则从0开始。
6️⃣ 插入元素的数量不限
- 可以插入任意数量元素,包括0个。
- 插入元素顺序保持。
7️⃣ 返回值说明
- 返回的是所有被删除元素组成的新数组。
- 如果没删除任何元素,返回空数组
[]。
示例汇总
let arr = [1, 2, 3, 4, 5];
// 删除2个元素,返回[2,3]
arr.splice(1, 2); // arr = [1,4,5]
// 插入元素,返回[]
arr.splice(1, 0, 'a', 'b'); // arr = [1,'a','b',4,5]
// 替换2个元素,返回被替换元素
arr.splice(2, 2, 'x', 'y'); // 返回['b',4],arr = [1, 'a', 'x', 'y', 5]
// 省略deleteCount,从索引1删除到末尾
arr.splice(1); // 返回 ['a', 'x', 'y', 5], arr = [1]
// 负数start参数,等于从倒数第2个开始删除1个元素
arr = [10, 20, 30, 40];
arr.splice(-2, 1); // 删除30,返回[30], arr = [10,20,40]