JavaScript中.splice()的用法
JavaScript Array splice() 方法详解
Array.prototype.splice()
是 JavaScript 数组的核心方法,用于在指定位置添加/删除元素,并返回被删除的元素,同时直接修改原数组。其语法为:
array.splice(startIndex, deleteCount, item1, item2, ...)
参数说明:
startIndex
:操作起始位置(索引从 0 开始)deleteCount
:要删除的元素数量(若为 0 则不删除)item1, item2...
:要添加的新元素(可选)
使用示例
1. 删除元素
let fruits = ['🍎', '🍌', '🍇', '🍊'];
let removed = fruits.splice(1, 2); // 从索引1开始删除2个元素console.log(fruits); // 输出: ['🍎', '🍊'] (原数组被修改)
console.log(removed); // 输出: ['🍌', '🍇'] (返回被删除元素)
2. 添加元素
let colors = ['red', 'green', 'blue'];
colors.splice(1, 0, 'yellow', 'purple'); // 在索引1处添加元素console.log(colors);
// 输出: ['red', 'yellow', 'purple', 'green', 'blue']
3. 替换元素
let numbers = [10, 20, 30, 40];
let replaced = numbers.splice(2, 1, 99); // 将索引2的元素替换为99console.log(numbers); // 输出: [10, 20, 99, 40]
console.log(replaced); // 输出: [30] (被替换的元素)
4. 删除末尾元素
let arr = [1, 2, 3, 4, 5];
arr.splice(-2, 1); // 倒数第2位开始删除1个元素console.log(arr); // 输出: [1, 2, 3, 5]
关键特性
- 修改原数组:与
slice()
不同,splice()
直接改变原数组 - 负索引支持:
startIndex
可为负数(从末尾倒数) - 返回被删除元素:始终返回数组(无删除时返回空数组)
- 高效操作:适合需要同时添加/删除的场景
⚠️ 注意:当
deleteCount
大于剩余元素数时,会删除从起始位置到末尾的所有元素。
与 slice() 对比
方法 | 修改原数组 | 返回内容 | 主要用途 |
---|---|---|---|
splice() | ✅ | 被删除的元素 | 添加/删除元素 |
slice() | ❌ | 新数组(子数组) | 提取子数组 |
// 示例对比
let a = [1,2,3];
a.splice(0,1); // 返回 [1], a变为[2,3]
let b = [1,2,3];
b.slice(0,1); // 返回 [1], b仍为[1,2,3]