Array.prototype.splice各种玩法的语法规则


array.splice(start, deleteCount, item1, item2, ...)

参数 类型 说明
start 整数 修改起始位置(索引),从0开始计数。负数表示从数组末尾倒数,如-1表示最后一个元素位置。
deleteCount 非负整数 start开始,删除多少元素。如果为0,则不删除元素。可省略,默认删除到末尾。
item1, item2, ... 任意值 可选,要插入到数组中的元素,插入位置是start索引处。可以插入0个、1个或多个元素。

1️⃣ 删除元素

array.splice(start, deleteCount);
  • start位置开始删除deleteCount个元素。
  • 返回被删除的元素组成的新数组。
  • 如果deleteCount省略,则从start开始删除到末尾。

语法细节:

情况 说明
start >= array.length 不删除,返回空数组
start < 0 转换为array.length + start,如果结果<0,则从0开始
deleteCount为0或负数 不删除任何元素,返回空数组
deleteCount大于剩余元素数 删除到数组末尾

2️⃣ 插入元素(不删除)

array.splice(start, 0, item1, item2, ...);
  • start位置开始,不删除元素,插入item1, item2, ...
  • 返回空数组,因为没删除任何元素。
  • start可以是负数,同删除规则。

3️⃣ 替换元素(删除+插入)

array.splice(start, deleteCount, item1, item2, ...);
  • start位置开始,删除deleteCount个元素。
  • 同时插入item1, item2, ...代替被删除元素。
  • 返回被删除的元素数组。

4️⃣ 省略 deleteCount 参数

array.splice(start);
  • start开始删除直到数组末尾所有元素。
  • 返回被删除元素数组。

5️⃣ 负数 start 参数的特殊处理

  • 负数start相当于array.length + start
  • start = -1表示最后一个元素位置。
  • 如果计算后start < 0,则从0开始。

6️⃣ 插入元素的数量不限

  • 可以插入任意数量元素,包括0个。
  • 插入元素顺序保持。

7️⃣ 返回值说明

  • 返回的是所有被删除元素组成的新数组
  • 如果没删除任何元素,返回空数组 []

示例汇总

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

// 删除2个元素,返回[2,3]
arr.splice(1, 2);  // arr = [1,4,5]

// 插入元素,返回[]
arr.splice(1, 0, 'a', 'b');  // arr = [1,'a','b',4,5]

// 替换2个元素,返回被替换元素
arr.splice(2, 2, 'x', 'y');  // 返回['b',4],arr = [1, 'a', 'x', 'y', 5]

// 省略deleteCount,从索引1删除到末尾
arr.splice(1);  // 返回 ['a', 'x', 'y', 5], arr = [1]

// 负数start参数,等于从倒数第2个开始删除1个元素
arr = [10, 20, 30, 40];
arr.splice(-2, 1);  // 删除30,返回[30], arr = [10,20,40]

美国2003年攻打伊拉克的理由

什么是“加杠杆”?

评 论
请登录后再评论