如果你刚接触 JavaScript 数组操作,一定会对 splice() 这个方法感到好奇——它名字听起来有点奇怪,但却是数组修改的“万能工具”。今天我们就用最直白的语言,结合具体例子,把这个“万能工具”的用法彻底搞清楚。

一句话记住 splice() 的核心作用

splice() 是数组的“手术刀”:它能直接在数组上“动刀”——删除元素、添加元素,甚至边删边加(替换元素)。关键是:它会直接修改原数组(这点很重要!)。

先看语法:三个关键参数

splice() 的完整语法是这样的:

数组.splice(开始位置, 删除几个, 要添加的元素1, 要添加的元素2, ...)

拆成三部分理解:

  1. 开始位置(必选):从数组的第几个元素开始操作?(注意:数组索引从 0 开始,比如第一个元素是索引 0)
  2. 删除几个(可选):从“开始位置”起,删掉几个元素?如果写 0,就不删除。
  3. 要添加的元素(可选):从“开始位置”起,插入这些新元素(如果前面删除了元素,新元素会顶替删除的位置)。

用 3 个最常见场景学用法

光看语法可能还是有点懵,我们通过几个具体的例子,看看 splice() 最常用的 3 种操作。

场景 1:删除元素(最常用)

目标:从数组中删掉指定位置的元素。
用法:只传前两个参数(开始位置,删除几个),后面不加元素。

例子:删掉数组中第 2 个元素(索引 1)开始的 2 个元素

let fruits = ['苹果', '香蕉', '橙子', '草莓', '西瓜'];

// 从索引 1(香蕉)开始,删掉 2 个元素(香蕉、橙子)
let deleted = fruits.splice(1, 2); 

console.log(fruits); // 原数组变了:['苹果', '草莓', '西瓜'](删掉了香蕉、橙子)
console.log(deleted); // 被删掉的元素组成新数组:['香蕉', '橙子']

关键点

  • splice() 返回的是“被删掉的元素”组成的数组(没删就返回空数组 [])。
  • 原数组 fruits 直接被修改了(这就是“手术刀”的特点)。

场景 2:添加元素(不删除,只插入)

目标:在数组的指定位置插入新元素,不删原来的。
用法:第二个参数(删除几个)写 0,后面跟上要添加的元素。

例子:在数组开头插入一个新水果

let fruits = ['香蕉', '橙子', '草莓'];

// 从索引 0(开头)开始,删 0 个元素(不删),插入 '苹果'
fruits.splice(0, 0, '苹果'); 

console.log(fruits); // 结果:['苹果', '香蕉', '橙子', '草莓'](新元素插在开头)

例子:在数组中间插入多个元素

let colors = ['红', '蓝', '紫'];

// 从索引 1(蓝)开始,删 0 个,插入 '橙' 和 '黄'
colors.splice(1, 0, '橙', '黄'); 

console.log(colors); // 结果:['红', '橙', '黄', '蓝', '紫'](橙、黄插在蓝前面)

场景 3:替换元素(边删边加)

目标:删掉几个旧元素,同时在同一位置插入新元素(相当于“替换”)。
用法:传开始位置、删除几个(>0)、后面跟上要添加的新元素。

例子:把数组中第 2 个元素(索引 1)的“香蕉”换成“芒果”

let fruits = ['苹果', '香蕉', '橙子', '草莓'];

// 从索引 1(香蕉)开始,删 1 个(删掉香蕉),插入 '芒果'
fruits.splice(1, 1, '芒果'); 

console.log(fruits); // 结果:['苹果', '芒果', '橙子', '草莓'](香蕉→芒果)

例子:一次替换多个元素

let nums = [1, 2, 3, 4, 5];

// 从索引 2(3)开始,删 2 个(删掉 3、4),插入 6、7、8
nums.splice(2, 2, 6, 7, 8); 

console.log(nums); // 结果:[1, 2, 6, 7, 8, 5](3、4 被 6、7、8 替换)

避坑指南!3 个容易忽略的细节

1. 它会直接修改原数组!

splice() 是“破坏性修改”,原数组会变。如果不想改原数组,可以先复制一份再操作:

let original = [1, 2, 3];
let copy = [...original]; // 复制数组(用展开运算符)
copy.splice(1, 1); // 修改副本,原数组 original 不变

2. “开始位置”可以用负数(从末尾数)

如果想从数组末尾开始算位置,用负数即可:

  • -1 表示最后一个元素,-2 表示倒数第二个,以此类推。

例子:删掉数组最后一个元素

let arr = [10, 20, 30, 40];
arr.splice(-1, 1); // 从倒数第 1 个(40)开始,删 1 个
console.log(arr); // 结果:[10, 20, 30](40 被删了)

3. 如果“删除几个”省略了,会删到数组末尾

如果只传“开始位置”,不传“删除几个”,会从开始位置一直删到数组结束:

let arr = [1, 2, 3, 4, 5];
arr.splice(2); // 从索引 2(3)开始,删到末尾(删掉 3、4、5)
console.log(arr); // 结果:[1, 2]

总结:什么时候用 splice()?

当你需要直接修改数组(删除、添加、替换元素)时,就用 splice()。记住它的核心口诀:

  • splice(开始位置, 删几个)
  • splice(开始位置, 0, 新元素...)
  • splice(开始位置, 删几个, 新元素...)

多动手试几个例子,很快就能熟练啦!