# 描述

在指定索引处删除数组元素或者增加数组元素。因此,splice() 方法要比 push()pop()shift()unshift() 更为强大和灵活,当然,也更复杂。

# 参数

# start

指定修改的开始位置。如果超出了数组的长度,则从数组末尾开始添加内容,如果是负值,则表示从数组末位开始的第几位。

若只使用 start 参数而不使用 deleteCountitem,如:array.splice(start),表示删除 [start, end] 的元素。

# deleteCount (可选)

表示要移除的数组的元素的个数。如果 deleteCount 是 0,则不移除元素。这种情况下,至少应该添加一个新元素。如果 deleteCount 大于 start 之后的元素的总数,则从 start 后面的元素豆浆被删除(含第 start 位)。

如果 deleteCount 被省略,则相当于 arr.lengtrh-start

# item1, item2, ... (可选)

要添加进数组的元素,从 start 位置开始,如果不指定,则 splice 将只删除数组元素。

# 返回值

返回由被删除的元素组成的一个数组。

如果只删除了一个元素,则返回只包含了一个元素的数组,如果没有删除元素,则返回空数组。

# 示例

splice 功能很强大,可以在指定位置增加或删除元素

  • 删除
var arr = [1, 2, 3];
arr.splice(0, 2);
// 从索引 0 开始删除 2 个元素(包含索引为 0 的元素)

console.log(arr);
//  [3]
  • 增加
var arr = [1, 2, 3];
arr.splice(0, 0, 4, 5);
// 如果不需要删除元素,将第二个参数指定为 0
// 从索引 0 开始删除 0 个元素,将元素 4 和 5 从索引为 0 的位置依次插入

console.log(arr);
// [4, 5, 1, 2, 3]
  • 同时删除和增加
var arr = [1, 2, 3];

arr.splice(1, 2, 4, 5); // [ 2, 3 ]

console.log(arr);
// [ 1, 4, 5 ]
// 从索引为 1 的位置开始删除 2 个元素,然后将 4 和 5 在索引为 1 处插入

# 边界情况

  • 只有 start
var arr = [1, 2, 3];

arr.splice(2); // [ 3 ]

console.log(arr); // [ 1, 2 ]
  • deleteCount 为 0
var arr = [1, 2, 3];

arr.splice(1, 0); // []

console.log(arr); // [ 1, 2, 3 ]
  • deleteCount 大于 start 之后元素的总和
var arr = [1, 2, 3, 4];

arr.splice(1, 4); // [ 2, 3, 4 ]

console.log(arr); // [ 1 ]
上次更新: 8/9/2021, 11:31:12 AM