删除索引后的所有项目

时间:2014-10-26 00:10:07

标签: javascript jquery

我有一个数组:

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

我将其拼接功能称为删除索引之前的所有

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

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

伪代码

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

5 个答案:

答案 0 :(得分:92)

使用.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";

答案 1 :(得分:8)

虽然为数组长度分配一个较短的值(如@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()方法不会更改原始数组。

答案 2 :(得分:3)

在索引后删除 所有项目

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,因为拼接开始从索引处删除。

答案 3 :(得分:1)

我认为您误解了Array.prototype.splice()的用法。它已经满足您的要求(删除索引后的所有内容,请阅读以下段落进行更正),并且确实返回已删除的值。我认为您对返回值作为数组的当前值感到困惑。

Array.prototype.splice()但是也会删除提供的索引值,这基本上等同于设置数组的长度。因此,如果您将其命名为array.splice(2),则会将长度设置为2,并且所有内容(包括索引2及之后的值)都将被删除。前提是该数组的当前长度大于提供给Array.prototype.splice()的第一个参数。

例如:

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

有关更多信息,请参见the MDN doc

答案 4 :(得分:0)

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

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"];