Sta*_*ers 48 javascript jquery
我有一个数组:
array = ['mario','luigi','kong']
Run Code Online (Sandbox Code Playgroud)
我调用它的splice函数来删除索引之前的所有项:
array.splice(1) //-> ['luigi','kong']
Run Code Online (Sandbox Code Playgroud)
我只是想知道是否有一个类似于splice的函数来删除索引后的所有项:
伪代码
array.mirrorsplice(1) //-> ['mario','luigi']
Run Code Online (Sandbox Code Playgroud)
dan*_*vis 108
使用Array.length
设置新的大小的阵列,这是比剪接()突变速度快:
var array = ['mario','luigi','kong', 1, 3, 6, 8];
array.length=2;
alert(array); // shows "mario,luigi";
Run Code Online (Sandbox Code Playgroud)
为什么它更快?因为Array.splice
必须创建一个包含所有已删除项目的新数组,而不.splice
创建任何内容并"返回"数字而不是新数组.
为了解决.length
使用问题,您可以为它提供一个负数索引,以及一个巨大的数字来切断数组的结尾:
var array = ['mario','luigi','kong'];
array.splice(-1, 9e9);
alert(array); // shows "mario,luigi";
Run Code Online (Sandbox Code Playgroud)
sha*_*a-1 10
虽然为数组长度分配一个较短的值(如@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"]
Run Code Online (Sandbox Code Playgroud)
如您所见,您需要存储slice
方法返回的值.要理解'为什么',这里是slice
和splice
方法之间的主要区别:
splice()
方法返回数组中已删除的项,并且slice()
方法返回数组中的选定元素,作为新的数组对象.splice()
方法更改原始数组并且slice()
方法不会更改原始数组.要删除所有项目的索引后:
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
Run Code Online (Sandbox Code Playgroud)
结果:
['mario', 'luigi']
Run Code Online (Sandbox Code Playgroud)
您需要 +1,因为splice开始在索引处删除。
我认为您误解了 的用法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']
Run Code Online (Sandbox Code Playgroud)
有关更多信息:请参阅MDN 文档。
归档时间: |
|
查看次数: |
37336 次 |
最近记录: |