奇怪的Array.slice行为

时间:2018-02-08 16:31:41

标签: javascript

任何人都可以解释“切片”行为吗?

var arr = ['a', 'b', 'c', 'd', 'e', 'f']
console.log(arr.slice(0, 4)); // [ 'a', 'b', 'c', 'd' ]
console.log(arr.slice(4, 4)); // []

为什么第二个数组是空的?不应该是['e','f']? 如果省略“end”参数,则结果符合预期。

2 个答案:

答案 0 :(得分:3)

arr.slice(4, 4)会将从index = 4开始的项目返回到index = 4; 4-4=0所以你的数组的长度为0

https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/slice



var arr = ['a', 'b', 'c', 'd', 'e', 'f']
console.log(arr.slice(0, 4)); // [ 'a', 'b', 'c', 'd' ]
console.log(arr.slice(4, 4)); // []
console.log(arr.slice(2, 4));
console.log(arr.slice(1, 2));




答案 1 :(得分:2)

根据official docs

  

将数组的一部分的浅表副本返回到从头到尾选择的新数组对象(不包括结尾)。原始数组不会被修改。

意思是,你从索引4开始,你在那个索引处结束,所以你没有采用任何元素,因为开始和结束索引之间的差异是0,所以没有采用任何元素。