如果你刚接触 JavaScript 数组操作,一定会对 splice() 这个方法感到好奇——它名字听起来有点奇怪,但却是数组修改的“万能工具”。今天我们就用最直白的语言,结合具体例子,把这个“万能工具”的用法彻底搞清楚。
一句话记住 splice() 的核心作用
splice() 是数组的“手术刀”:它能直接在数组上“动刀”——删除元素、添加元素,甚至边删边加(替换元素)。关键是:它会直接修改原数组(这点很重要!)。
先看语法:三个关键参数
splice() 的完整语法是这样的:
数组.splice(开始位置, 删除几个, 要添加的元素1, 要添加的元素2, ...)
拆成三部分理解:
- 开始位置(必选):从数组的第几个元素开始操作?(注意:数组索引从 0 开始,比如第一个元素是索引 0)
- 删除几个(可选):从“开始位置”起,删掉几个元素?如果写 0,就不删除。
- 要添加的元素(可选):从“开始位置”起,插入这些新元素(如果前面删除了元素,新元素会顶替删除的位置)。
用 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(开始位置, 删几个, 新元素...)
多动手试几个例子,很快就能熟练啦!
评论