使用 splice() 操作数组

三葉Leaves Author

关于 splice() 的一些特点

  1. 能够一次性完成删除、插入或替换元素的组合操作,无需借助多个方法配合使用。

  2. 在更改原数组的内容和长度的同时,还会返回一个由被删除元素组成的新数组。

  3. 其他方法: 要创建一个删除和/或替换部分内容而不改变原数组的新数组,请使用 toSpliced()。要访问数组的一部分而不修改它,参见 使用 slice() 浅拷贝数组片段

语法

1
2
3
arr.splice(start)
arr.splice(start, deleteCount)
arr.splice(start, deleteCount, item1, item2, …, itemN)
  • start:从哪个下标开始操作,支持负数(从末尾倒数计算)。
  • deleteCount(可选):要删除的元素个数;若省略或值 ≥ 剩余元素数,则删除从 start 到末尾的所有元素;若为 0 或负数,则不删除元素,仅插入。
  • item1…itemN(可选):要插入的新元素列表

返回值

返回一个数组,包含所有被删除的元素:

  • 若删除了多个元素,则数组长度等于删除数量;

  • 若只删除一个,则返回单元素数组;

  • 若未删除(deleteCount<=0 且未越界),则返回空数组(MDN Web Docs, W3Schools.com)。

常见用例与示例

增加元素

  1. 第二个参数设为 0
  2. 会在选定的起始元素前面增加
  3. 可以增加多个元素
1
2
3
4
5
6
7
const months = ["Jan", "March", "April", "June"];

// Inserts at index 1
months.splice(1, 0, "Feb");

// Expected output: Array ["Jan", "Feb", "March", "April", "June"]
console.log(months);

替换元素

替换元素的本质是删除若干个元素,然后增加新元素。

1
2
3
4
5
6
7
const months = ["Jan", "Feb", "March", "April", "June"];

// Replaces 1 element at index 4
months.splice(4, 1, "May");

// Expected output: Array ["Jan", "Feb", "March", "April", "May"]
console.log(months);

删除元素

删除元素会从指定的起始元素开始删(并且包括起始元素

1
2
3
4
5
const arr = ["Jan", "Feb", "March", "April", "June"]

arr.splice(2,3)

console.log(arr) // [ 'Jan', 'Feb' ]

删除至末尾

1
2
3
4
5
let arr = [0,1,2,3,4];

arr.splice(2);

console.log(arr); // [0,1]

负索引支持

起始下标为负数时,会从最后一个元素往前倒数(最后一个元素下标被认为是 -1,倒数第二个则是 -2)

1
2
3
4
5
const arr = ["Jan", "Feb", "March", "April", "June"]

arr.splice(-2,0,'Leaves')

console.log(arr) //[ 'Jan', 'Feb', 'March', 'Leaves', 'April', 'June' ]

参考文献

  1. Array.prototype.splice() - JavaScript | MDN
  • 标题: 使用 splice() 操作数组
  • 作者: 三葉Leaves
  • 创建于 : 2025-05-09 00:00:00
  • 更新于 : 2025-05-26 02:57:24
  • 链接: https://blog.oksanye.com/b8c92e14aaef/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论