删除索引后的所有项目

Remove all items after an index

本文关键字:项目 索引 删除      更新时间:2023-09-26

我有一个数组:

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

我调用其拼接函数来删除索引前的所有项目:

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

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

伪代码

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

使用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所说)是从数组中删除尾部元素的最快、最简单的方法,但您也可以使用类似的方法(如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()方法不更改原始数组

删除索引后的所有项目:

var array = ['mario','luigi','kong'],
index = 1; // your index here
array = 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,因为拼接开始在索引处删除。

我认为您误解了Array.prototype.splice()的用法。它已经完成了您的要求(删除索引后的所有内容,请阅读下面的段落进行更正),并且它确实返回了删除的值。我认为您将返回的值与数组的当前值混淆了。

然而,Array.prototype.splice()也删除了提供的索引值,这基本上等同于设置数组的长度。因此,如果您将其称为array.splice(2),它将把长度设置为2,并且包括索引2及其后的值在内的所有内容都将被删除。假设阵列的当前长度大于提供给CCD_ 16的第一参数。

例如:

const array = ['mario','luigi','kong'];
const deletedItem = array.splice(1);
console.log(array); // ['mario']
console.log(deletedItem); // ['luigi','kong']

有关更多信息:请参阅MDN文档。

您可以使用splice。这是一个演示。

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

删除索引后的所有元素:

var removedElement = array.splice(index, array.length)

removedElement将从数组中删除元素列表

示例:

let index = 2;
var removedElement = array.splice(2, array.length); 
removedElement = ["kong"];
array = ["mario", "luigi"];

您可以使用.slice来实现这一点。

示例(从数组中删除除前1000个条目外的所有条目):

originalArray = originalArray.slice(0, 1000)