删除索引后的所有项目

我有一个数组:

array = ['mario','luigi','kong'] 

我调用它的splice函数来删除索引之前的所有项:

 array.splice(1) //-> ['luigi','kong'] 

我只是想知道是否有一个类似于splice的函数来删除索引后的所有项:

伪代码

 array.mirrorsplice(1) //-> ['mario','luigi'] 

使用.length为数组设置一个新的大小,这比splice()变异更快:

 var array = ['mario','luigi','kong', 1, 3, 6, 8]; array.length=2; alert(array); // shows "mario,luigi"; 

为什么它更快? 因为.splice()必须创建一个包含所有已删除项的新数组,而.length创建任何内容并“返回”数字而不是新数组。

为了解决splice()使用问题,你可以为它提供一个负数索引,以及一个巨大的数字来截断数组的结尾:

 var array = ['mario','luigi','kong']; array.splice(-1, 9e9); alert(array); // shows "mario,luigi"; 

虽然为数组长度分配一个较短的值(如@dandavis所说)是从数组中删除尾随元素的最快和最简单的方法,但您也可以使用类似splice的方法(称为slice)来实现 。 如下:

 array = ['mario', 'luigi', 'kong']; array = array.slice(0, 2); //Need to assign it to the same or another variable console.log(array); //["mario", "luigi"] 

删除 索引后的所有项目:

 var array = ['mario','luigi','kong'], index = 1; // your index here array.splice(index + 1, array.length - (index + 1) ); // 3 - (1+1) = 1 // 1 is the remaining number of element(s) in array // hence, splice 1 after index 

结果:

 ['mario', 'luigi'] 

你需要+1,因为splice开始在索引处删除。