WebGL Tutorial
and more

slice

撰写时间:2024-03-05

最新修订:2024-03-09

slice

切割数组。返回切割部分的复制。该方法不会改变原始数组。

原型

*[]slice
  • numberstart
  • numberend

参数

start
开始位置的索引值。若为负数,则从倒数位置为length + start的地方开始。
end
结束位置的索引值,结果不包含该索引值所在位置的元素。若为负数,则切割至倒数位置为length + end的地方结束。若为undefined,则一直切割至数组的结尾。

返回值

返回一个包含切割部分的新数组。

说明

slice方法的两个参数均是数组元素的索引值,要复制的部分从参数start开始,但参数end所在的字符不包含在要复制的内容当中。代码:

let arr = "department"; let result = arr.slice(2, 6);

示意图如下:

digraph { node [] edge [colorscheme=set312] arr [shape=plaintext, colorscheme=greens9, label=<
arr0123456789
department
>] newString [shape=plaintext, colorscheme=brbg9, label=<
New Stringpart
>] start -> arr:f1 [style=dashed]; end -> arr:f2 [style=dashed]; arr:f3 -> newString:f1 [label="copy"]; newString -> client [label="return" shape=oval]; }

例子

slice不会改变原始数组。

let arr = [1, 2, 3, 4, 5]; let result = arr.slice(0, 3); console.log(result); // [1, 2, 3] console.log(arr); // [1, 2, 3, 4, 5], untouched

参数end的值为3,其所在位置的元素值为4,不包含在结果中。

若省略参数end,则从start的位置开始切割,直至末尾。

arr = [1, 2, 3, 4, 5]; console.log(arr.slice(3)); // [4, 5]

若参数start为负数,表示从倒数第n个元素的位置开始切割,n的值等于start

arr = [1, 2, 3, 4, 5]; console.log(arr.slice(-2)); // [4, 5]

索引值为负数时,若超出范围,则返回所有元素的复制。

arr = [1, 2, 3, 4, 5]; console.log(arr.slice(-10)); // [1, 2, 3, 4, 5]

参见

  1. at
  2. copyWithin
  3. splice

参考资源

  1. ECMA 262: Array Objects