Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 删除索引后的所有项_Javascript_Jquery - Fatal编程技术网

Javascript 删除索引后的所有项

Javascript 删除索引后的所有项,javascript,jquery,Javascript,Jquery,我有一个数组: array = ['mario','luigi','kong'] 我调用其splice函数来删除索引前的所有项目: array.splice(1) //-> ['luigi','kong'] var array = ['mario','luigi','kong'], index = 1; // your index here array.splice(index + 1, array.length - (index + 1) ); // 3 - (1+1) = 1 //

我有一个数组:

array = ['mario','luigi','kong']
我调用其splice函数来删除索引前的所有项目

array.splice(1) //-> ['luigi','kong']
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
我只是想知道是否有一个类似于“剪接”的函数来删除索引后的所有项目:

array.splice(1) //-> ['luigi','kong']
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
伪码

用于设置数组的新大小,其速度快于变异:

var数组=['mario','luigi','kong',1,3,6,8];
数组长度=2;
警报(数组);//播放“马里奥,路易吉”;
为什么速度更快?因为必须创建一个包含所有删除项的新数组,而不创建任何内容并“返回”一个数字而不是新数组

为了解决使用问题,您可以向它提供一个负索引,同时提供一个巨大的数字来切掉数组的末尾:

array = ['mario','luigi','kong']
var数组=['mario','luigi','kong'];
阵列拼接(-1,9e9);
警报(数组);//播放“马里奥,路易吉”;

虽然为数组长度指定一个较短的值(正如@dandavis所说)是从数组中删除尾随元素的最快、最简单的方法,但您也可以使用类似的方法,如。 例如:

array=['mario','luigi','kong'];
array=array.slice(0,2)//需要将其分配给同一个或另一个变量
console.log(数组)//[“mario”,“luigi”]
删除索引后的所有项目

array.splice(1) //-> ['luigi','kong']
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
结果:


您需要+1,因为拼接开始在索引处删除。

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

var array = ['mario','luigi','kong']
要删除索引后的所有元素,请执行以下操作:

var removedElement = array.splice(index, array.length)
removedElement将从数组中删除元素列表

例如:


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

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

例如:

const数组=['mario','luigi','kong'];
const deletedItem=array.splice(1);
console.log(数组);//[“马里奥”]

console.log(deletedItem);//['luigi','kong']
缩短
长度是否会导致内存泄漏,或者javascript引擎是否会处理此问题?--好的,根据ECMAScript规范,这是明确定义和正确处理的,元素将被删除。Pro提示您可以使用数组。拼接(0,无穷大)
。我的意思是我很难相信你能拥有一个超过900000000项的阵列。。。但是当你有理由在JS中使用Infinity关键字时,你会觉得很酷:)array.length技巧是否适用于。。。。在示例数组中仅获取
6,8
?因为我不知道如何使用长度技巧获得数组中的最后元素。这只适用于正确拼接?@Hangfish:如果您只想获取元素而不想改变数组,请使用
.slice(-2)
。如果您需要收集删除的元素,请使用
.splice()
这里有一个小基准()比较针对此问题给出的解决方案。可能的重复项不知道向下投票的原因,但此函数已在我的一些实时项目中使用,并且对于任何类型的动态长度都可以正常工作。不过,我还是更喜欢array.length修改,因为拼接有时会让人困惑。