splice() 是 JavaScript 中可同时实现删除、插入、替换的原数组修改方法:指定起始索引和删除数量可精准删除;设删除数为 0 并追加元素可插入;删除若干再插入若干即完成替换;始终返回被删元素数组,原数组被直接修改。

splice() 是 JavaScript 中最灵活的数组操作方法之一,它能在一个操作中完成插入、删除、替换,关键在于参数的组合使用。
精准删除元素:指定起始位置和数量
删除操作最基础也最常用。第一个参数是起始索引(从 0 开始),第二个参数是删除个数。负数索引表示从末尾倒数(如 -1 是最后一个元素)。
- 删除第 2 个元素(索引为 1):
arr.splice(1, 1) - 删除最后两个元素:
arr.splice(-2, 2) - 只删不插,第二个参数不能省略;设为 0 则不删除任何项
在任意位置插入新元素:删除数为 0,后接插入项
插入的本质是“删除 0 个,再添加若干个”。第三个及后续参数即为要插入的元素,它们会从指定位置开始依次填入。
- 在开头插入:
arr.splice(0, 0, 'a', 'b')→ ['a', 'b', ...原数组] - 在索引 2 处插入两个元素:
arr.splice(2, 0, 'x', 'y') - 注意:插入不会覆盖原有元素,只是把原位置及之后的元素整体后移
原地替换一段元素:删除若干 + 插入若干
替换 = 删除旧内容 + 插入新内容。删除个数与插入个数可以不同,数组长度随之变化。
- 用 ['M', 'N'] 替换索引 1 开始的 2 个元素:
arr.splice(1, 2, 'M', 'N') - 删 3 个、插 1 个 → 数组变短;删 1 个、插 3 个 → 数组变长
- 若想“覆盖式”替换(保持长度不变),确保插入数量等于删除数量
注意返回值与原数组变更
splice() 总是直接修改原数组,并返回被删除的元素组成的数组(没删则返回空数组)。这点和 slice() 完全相反。
- 误用陷阱:写成
let newArr = arr.splice(...)以为得到新数组 —— 实际上newArr是被删掉的元素,arr已被改写 - 如需保留原数组,先用扩展运算符复制:
const copy = [...arr]; copy.splice(...) - 返回值可用于链式判断,例如:
if (arr.splice(i, 1).length) { /* 确实删到了 */ }

















