目录
1. slice() 方法
一、 Array.prototype.slice()
arr.slice(begin, end) 提取数组元素
slice()
- 返回一个新的数组对象,这一对象是一个由
begin
和end
决定的原数组的浅拷贝(包括begin
,不包括end
)。 -
不会修改原数组,只会返回一个浅复制了原数组中的元素的一个新数组。
-
原数组的元素会按照下述规则拷贝:
- 如果该元素是个对象引用(不是实际的对象),
slice
会拷贝这个对象引用到新的数组里。两个对象引用都引用了同一个对象。如果被引用的对象发生改变,则新的和原来的数组中的这个元素也会发生改变。 - 对于字符串、数字及布尔值来说(不是 String、Number 或者 Boolean 对象),
slice
会拷贝这些值到新的数组里。在别的数组里修改这些字符串或数字或是布尔值,将不会影响另一个数组。如果向两个数组任一中添加了新元素,则另一个不会受到影响。
可选参数
1. begin
- 提取起始处的索引(从
0
开始),从该索引开始提取原数组元素。 - 如参数为负数,表示从原数组中的倒数第几个元素开始提取,
slice(-2)
表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。 -
let arr = [1, 2, 3, 4] let result = arr.slice(0, 1) // [1] //从倒数第二个元素开始 提取到最后一个元素 let result = arr.slice(-2) // [3, 4]
- 如果省略
begin
,则slice
从索引0
开始。 - 如果
begin
超出原数组的索引范围,则会返回空数组。
2. end
- 提取终止处的索引(从
0
开始),在该索引处结束提取原数组元素。 slice
会提取原数组中索引从begin
到end
之前 的所有元素(不包含end
)。-
let arr = [1, 2, 3, 4] //从索引号1开始,截止到索引号3之前得元素 let result = arr.slice(1, 3) // [2, 3]
- 如果参数为负数, 表示在原数组中的倒数第几个元素结束抽取。
-
let arr = [1, 2, 3, 4] //从倒数第二个开始,截止到 倒数第一个之前的元素 let result = arr.slice(-2, -1) // [3]
- 如省略end,slice会一直提取到原数组末尾。
- 如果
end
大于 数组的长度,slice
也会一直提取到原数组末尾。
返回值
一个含有被提取元素的新数组。