一、slice方法

语法:


arr.slice([begin[, end]])


begin参数:可选

从该索引开始提取原数组元素。如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取。

此参数缺省为0,如果 begin 超出原数组的索引范围,则会返回空数组。

end参数:可选

在该索引处结束提取原数组元素,slice 会提取原数组中索引从 begin 到 end 的所有元素(包含 begin,但不包含 end)。

如:slice(0,2) 会提取原数组中从第1个元素开始到第3元素之间的(不包含第3个元素)所有元素 (即索引为 0,1的元素)。

[注]如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。

如果 end 被省略或者大于数组的长度,则 slice 会一直提取到原数组末尾。

返回值

一个含有被提取元素的新数组。

举例

JavaScript Array方法slice与splice小结_数组

小结

  • 这个函数比Python语言中的列表切片操作功能要弱(Python语言中的切片还可以指定步长值)。
  • 此方法不会修改原始数组。
  • begin和end参数都用于指示截取子串的位置,而且总按照自左到右的方向截取。还有,end值对应的元素(如果存在的话)总不包含,而且总是从其位置处减1后的左侧位置处(如果存在)读取元素。即:end 是提取此索引之前的元素,不包括索引 end 在内。
  • 如果未定义,start 的默认值为 0。如果 start 大于数组的索引范围, slice() 方法将返回一个空数组。


二、splice

语法


array.splice(index,howmany,item1,.....,itemX)


参数描述

  • index:必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组元素的下标,必须是数字。
  • howmany: 可选。规定应该删除多少元素。必须是数字,但可以是 "0"。如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
  • item1, ..., itemX:可选。要添加到数组的新元素。

返回值

Array,如果从 array中删除了元素,则返回的是含有被删除的元素的数组。

举例

JavaScript Array方法slice与splice小结_指定位置_02


小结

splice() 方法功能比较强,它可以实现删除指定数量的元素、替换指定元素以及在指定位置添加元素。这些不同功能的实现需要结合方法参数来确定:

  • 当参数只有 index 和 howmany 两个参数时,如果 howmany 不等于 0,splice() 方法实现删除功能,同时返回所删除的元素:从 index参数指定位置开始删除 count 参数指定个数的元素;
  • 当参数为 3 个以上,且 howmany 参数不为0时,splice() 方法实现替换功能,同时返回所替换的元素:用第三个及其之后的参数替换 index 参数指定位置开始的 howmany 参数指定个数的元素;
  • 当参数为 3 个以上,且 howmany 参数为 0 时,splice() 方法的实现添加功能:用第三个及其之后的参数添加到 index 参数指定位置上。

返回值:数组类型;如果从 array 中删除了元素,则返回的是含有被删除的元素的数组。

记忆口诀


“2山3梯0添加”


  • 当有两个参数时:删除操作;
  • 当有>=3个元素时:如果第2个参数不等于0,代表是替换操作,如果第2个参数为0,代表是添加操作。


引用资料

https://blog.csdn.net/dkm123456/article/details/110562051

https://zhuanlan.zhihu.com/p/435741050

https://www.runoob.com/jsref/jsref-slice-array.html

https://m.php.cn/article/487471.html