我在chrome控制台中输入以下内容:
> Array.prototype.slice.call([1,2], 0)
[1, 2]
> Array.prototype.slice.call([1,2], 1)
[2]
为什么第一个电话不会返回1?
答案 0 :(得分:2)
带有一个参数的切片从您在参数中给出的索引位置返回数组。在你的情况下,0标记索引位置0,因此它返回整个数组。
Array.prototype.slice.call([1,2,3,4,5], 0)
//=> [1,2,3,4,5] because index to start is 0
Array.prototype.slice.call([1,2,3,4,5], 2)
//=> [3,4,5] because index to start is 2
第二个参数是从索引开始切出的元素数量,所以:
Array.prototype.slice.call([1,2,3,4,5], 0, 1)
//=> [1] because index to start is 0 and number of elements to slice is 1
Array.prototype.slice.call([1,2,3,4,5], 2, 2)
//=> [3,4] because index to start is 2 and number of elements to slice is 2
答案 1 :(得分:2)
Array.prototype.slice.call([1,2], 0)
返回从索引0开始的数组的所有元素,并将整个元素放入数组中。
Array.prototype.slice.call([1,2], 1)
返回从索引1开始的数组的所有元素,并将整体放入数组中,但这次它只找到1个元素2
。
答案 2 :(得分:1)
如所示here,slice
方法接受开始和可选的结束偏移,而不是要切出的元素的索引。如果没有提供偏移量,它将切片到数组的末尾。
在您的第一个示例中,slice
从元素0开始,而在第二个示例中,它从元素1开始。在两个场景中,它将在该索引处及之后找到的任何元素,因为您尚未指定抵消。
答案 3 :(得分:1)
要切片的第一个参数是数组中的起始索引(从零开始计数)。 第二个参数(在您的任何一个示例中都没有给出)是结束。确切地说:它是一个超越包容性的终端指数。无论如何,它默认为数组的末尾,这是你看到的行为。
Array.prototype.slice.call([1,2], 0, 1)
应该给你[1]
答案 4 :(得分:0)
slice.call(arguments,Fromindex);
Fromindex意味着将参数列表从索引切片到结尾。
视你的情况而定 从索引1
切片参数这就是为什么你得到[2]