从第N个元素开始切片数组到最后一个元素

76

如何进行这个转换?

["a","b","c","d","e"] // => ["c", "d", "e"]

我认为slice可以做到这一点,但是...

["a","b","c","d","e"].slice(2,-1) // [ 'c', 'd' ]
["a","b","c","d","e"].slice(2,0)  // []
7个回答

153

1
好的...但是如果我无法预测切片的结尾是否被定义呢?在Python中,我们有str[start:None]来切片到末尾。在JavaScript中,我该如何等效地实现它? - yota
@yota 如果你知道数组的长度,你可以将其作为第二个参数传递:arr.slice(2, arr.length)。如果第二个参数超过了数组的长度,它仍然会返回从 begin 到序列末尾的元素。如果这对你不起作用,你需要一个 if 语句。 - Tim S.
那真是太简单了。 - Merunas Grincalaitis

10

5

只需给定你想要的起始索引,剩余数据就可以从数组中获取。

["a","b","c","d","e"].splice(2) => ["c", "d", "e"]

2
问题与切片有关,而不是拼接。 - David Casanellas
嗯,从技术上讲,这确实可以工作,但如果你在意原始数组不被改变的话,不要这样做,因为它会发生变异。现在起始数组只是 ["a", "b"] - General Grievance

4
["a","b","c","d","e"].slice(-3) => ["c","d","e"]

虽然这样可以达到预期的结果,但你必须对N进行一些不必要的算术运算才能得到负数。 - General Grievance

1
如果索引是负数,则必须在n前添加“-”,end表示距离结尾的偏移量。
function getTail(arr, n) {
return arr.slice(-n);
}

2
这将返回最后的 n 条记录,但不包括从第 n 条记录到结尾的所有记录。 - Friedrich -- Слава Україні

1
切片在指定的结束参数处终止,但不包括它。如果要包括它,则必须将最后一个索引指定为数组的长度(在这种情况下为5),而不是结束索引(-1)等。
["a","b","c","d","e"].slice(2,5) 
// = ['c','d','e']

-3

var arr = ["a", "b", "c", "d", "e"];
arr.splice(0,2);
console.log(arr);

Please use above code. May be this you need.


2
问题与切片(slice)有关,而非删除(splice)。 - David Casanellas
技术上可以工作,但会改变数组。 - General Grievance

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接