删除索引后的所有项目
我有一个数组:
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开始在索引处删除。