删除索引后的所有项目

新手上路,请多包涵

我有一个数组:

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

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

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

我只是想知道是否有类似于 splice 的功能来删除 索引后的 所有项目:

伪代码

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

原文由 Starkers 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 294
2 个回答

使用 Array.length 为数组设置新的大小,这比 Array.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 发布,翻译遵循 CC BY-SA 4.0 许可协议

虽然为数组长度分配一个较短的值(如@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"]

如您所见,您需要存储 slice 方法的返回值。要理解“为什么”,这里是 slicesplice 方法之间的主要区别:

  • splice() 方法返回数组中删除的项目, slice() 方法返回数组中选定的元素,作为新的数组对象。
  • splice() 方法更改原始数组, slice() 方法不更改原始数组。

原文由 sha-1 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏