梳理了一些 javascript 的入门开发经验,分享出来,欢迎指正学习。
是什么
slice方法可以在不修改原始列表的情况下创建列表子集的浅拷贝。slice 方法不要与splice方法混淆,splice`方法会修改原始数组。
arr.slice([begin[, end]])
begin
从该索引处开始提取原数组中的元素,如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2)表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。 如果省略 begin,则 slice 从索引 0 开始。
end
在该索引处结束提取原数组元素(从0开始)。slice会提取原数组中索引从 begin 到 end 的所有元素(包含begin,但不包含end)。
slice(1,4) 提取原数组中的第二个元素开始直到第四个元素的所有元素 (索引为 1, 2, 3的元素)。
如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1)表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。
如果 end 被省略,则slice 会一直提取到原数组末尾。如果 end 大于数组长度,slice 也会一直提取到原数组末尾。
做什么
用法1:简单的复制
const arr2 = arr.slice() // 浅复制
用法2:获取从 N 开始的子数组
使用slice方法最简单的方法就是原始数组从N开始抽取的所有元素。
arr.slice(1)
用法3:获取数组的前n个
获取数组的前面的数,我们需要使用第二个参数:end。
当有两个参数时,slice方法返回一个从begin开始但不包括end的集合。
由于JavaScript数组是从0开始的(索引从0开始),这使得获取前N个元素变得非常简单:
const first3 = arr.slice(0, 3)
用法4:获取从末尾 N 开始的子数组
slice的另一种使用方法是获取数组的末尾,利用的是负索引从末尾开始计数。
这种负索引使删除任意数量的元素变得超级简单。例如,如果你只想抓取3个
const last3 = arr.slice(-3)
用法5:获取数组中某段子数组
如果我们想要使用slice从任何索引开始获取数组的一段,该怎么办?
为此,我们需要从 (begin, length) 转换为(begin, end)。 计算逻辑很简单,我们可以定义一个简单的函数来做到这一点:
const arr1 = arr.slice(begin, begin + length);
用法6:将类似数组的对象转换为数组
slice在类似数组的对象上的一个常见用途是将它们转换为实际数组。 例如:
const args = Array.prototype.slice.call(arguments);