splice与slice

161 阅读2分钟

在JavaScript中,splice() 和 slice() 都是用于处理数组的方法,但它们的功能和用途有着显著的区别。

slice()

slice() 方法用于返回数组的一个浅拷贝,从原始数组的start位置(包含)到end位置(不包含)之间的部分,原数组不会被修改。

  • 语法array.slice([begin[, end]])

  • 参数

    • begin(可选):提取起始处的索引(从该索引处开始提取原数组元素),如果该值为负数,则表示从原数组的倒数第几个元素开始提取,如果省略该参数,则slice会从索引0开始。
    • end(可选):在该索引处结束提取原数组元素(提取结束前的最后一个元素的索引),slice会提取到该索引但不包括该索引处的元素。如果该参数是负数,则它表示在原数组中的倒数位置。如果省略endslice会一直提取到原数组末尾。
  • 返回值:返回一个新数组,这个数组是一个由原数组中的指定开始到指定结束(不包括结束)之间的项组成的浅拷贝。

splice()

splice() 方法通过删除现有元素和/或添加新元素来更改一个数组的内容。

  • 语法array.splice(start[, deleteCount[, item1[, item2[, ...]]]])

  • 参数

    • start:指定修改的开始位置(索引)。如果超出了数组的长度,则会从数组末尾开始添加内容;如果是负值,则表示从数组末尾开始的第几位(例如,-2表示数组倒数第二个元素)。
    • deleteCount(可选):整数,表示要移除的数组元素的个数。如果deleteCount被省略了,或者其值大于等于start之后的元素总数,则从start后面的元素都将被删除。如果deleteCount是0或者负数,则不会移除元素。这种情况下,至少应添加一个新元素。
    • item1, item2, ...(可选):要添加进数组的元素,从start位置开始。如果不指定,则splice()将只删除数组元素。
  • 返回值:由被删除的元素组成的一个数组。如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除元素,则返回空数组。

总结

  • 修改原数组splice() 方法会修改原数组,而 slice() 不会。
  • 返回值splice() 返回被删除的元素组成的数组,而 slice() 返回的是原数组的一个浅拷贝。
  • 用途splice() 用于添加或删除数组中的元素,slice() 用于提取数组的某个部分。