灵活运用数组操作方法-splice()-向数组中间插入数据

2,140 阅读3分钟

这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战

前面文章学习了操作数组的一些方法(slice()/map()/reduce()等)也都是高阶函数, JavaScript 并不完美但是不影响其运行, 这里学习其中的一些神奇"bug"直达列表

在项目开发中对于请求后端的数据多为数组, 经常需要对这个大数组进行处理, 本篇继续学习 JavaScript 数组的一些相关方法 Array.prototype.splice()

splice() 方法的运用比较灵活, 在操作数组数据上: 比如 在数组中间插入数据, 就可以用这个方法

JavaScript - splice()

Array.prototype.splice() 方法通过删除或替换现有元素或者原地添加新的元素来修改数组, 并以数组形式返回被修改的内容。

splice() 这个方法会改变原数组。

注意: 不要和 slice() 弄混淆了, 它不会改变原数组, 这两个方法在项目开发中以及面试中也会经常考到.

splice() 使用方法:

arr.splice(start[, deleteCount[, item1[, item2[, ...]]]])
  • start​

    指定修改的开始位置(从 0 计数)。如果超出了数组的长度,则从数组末尾开始添加内容;如果是负值,则表示从数组末位开始的第几位(从-1 计数,这意味着-n 是倒数第 n 个元素并且等价于 array.length-n);如果负数的绝对值大于数组的长度,则表示开始位置为第 0 位。

  • deleteCount 可选 整数,表示要移除的数组元素的个数。

    如果 deleteCount 大于 start 之后的元素的总数,则从 start 后面的元素都将被删除(含第 start 位)。

    如果 deleteCount 被省略了,或者它的值大于等于 array.length - start(也就是说,如果它大于或者等于 start 之后的所有元素的数量),那么 start 之后数组的所有元素都会被删除。

    如果 deleteCount 是 0 或者负数,则不移除元素。这种情况下,至少应添加一个新元素。

  • item1, item2, ... 可选

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

注意: 如果添加进数组的元素个数不等于被删除的元素个数,数组的长度会发生相应的改变

由此可以说明 splice() 方法的功能还是比较多的 ,, 需要灵活运用.!

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

使用小例子:

比如 在数组中间插入数据, 就可以使用 splice() 如下:

let arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
let removedArr = arr.splice(2, 0, 1000000)

/// 从下标为 2的地方删除 0个元素 并插入 1000000 这个元素.
// 被删除的元素为空: [], 即没有元素被删除,
// 运算后的 arr: [0, 1, 2, 1000000, 3, 4, 5, 6, 7, 8, 9];

相关阅读文章列表

参考文章