splice() 是 JavaScript 中直接修改原数组的方法,可删除、插入或替换元素,返回被删除元素组成的数组;参数包括起始索引、删除个数及可选插入项。

splice() 是 JavaScript 中用于**直接修改原数组**的方法,既能删除元素,也能插入或替换元素。它的核心特点是“就地操作”,不返回新数组,而是返回被删除的元素组成的数组(如果没有删除,则返回空数组)。
基本语法与参数含义
array.splice(start, deleteCount, item1, item2, ...)
- start:开始操作的索引位置(从 0 开始)。支持负数(如 -1 表示倒数第一个)。
- deleteCount:要删除的元素个数。为 0 不删除;省略或大于剩余长度,则从 start 删到末尾。
- item1, item2, ...:可选,要插入到 start 位置的新元素(可多个)。
只删除元素(最常用场景)
传入两个参数:起始位置和删除个数,不提供新元素。
let fruits = ['apple', 'banana', 'cherry', 'date']; let removed = fruits.splice(1, 2); // 从索引1开始删2个 // fruits → ['apple', 'date'] // removed → ['banana', 'cherry']
注意:删除后,后续元素自动前移,数组长度改变。
插入元素(不删除)
把 deleteCount 设为 0,并在后面添加要插入的值。
let nums = [1, 2, 4, 5]; nums.splice(2, 0, 3); // 在索引2处插入3 // nums → [1, 2, 3, 4, 5]
也可一次插入多个:
nums.splice(0, 0, -1, 0); // 开头插入两个 // nums → [-1, 0, 1, 2, 3, 4, 5]
替换元素(删除 + 插入)
在指定位置删掉若干个,再立即插入新元素——实现“替换”效果。
let colors = ['red', 'green', 'blue']; colors.splice(1, 1, 'yellow', 'purple'); // 删 green,插 yellow 和 purple // colors → ['red', 'yellow', 'purple', 'blue']
这比先 pop/push 或 slice + concat 更简洁,尤其适合局部更新。
常见易错点提醒
- 索引超出范围(如
start > array.length)时,不报错也不操作,返回空数组。 - 负数索引按规则计算:
start = Math.max(0, array.length + start),比如splice(-2, 1)表示从倒数第二个开始删1个。 - 想保留原数组?不能直接用 splice —— 先用
slice()或展开语法复制一份再操作。


















