gpt4 book ai didi

javascript - 从 Javascript/jQuery 中的数组中删除多个元素

转载 作者:IT王子 更新时间:2023-10-29 02:44:00 26 4
gpt4 key购买 nike

我有两个数组。第一个数组包含一些值,而第二个数组包含应从第一个数组中删除的值的索引。例如:

var valuesArr = new Array("v1","v2","v3","v4","v5");   
var removeValFromIndex = new Array(0,2,4);

我想从 valuesArr 中删除索引 0,2,4 处的值。我认为 native splice 方法可能会有所帮助,所以我想出了:

$.each(removeValFromIndex,function(index,value){
valuesArr.splice(value,1);
});

但它并没有起作用,因为在每次拼接之后,valuesArr中的值的索引是不同的。我可以通过使用临时数组并将所有值复制到第二个数组来解决这个问题,但我想知道是否有任何 native 方法可以传递多个索引以从数组中删除值。

我更喜欢 jQuery 解决方案。 (不确定我是否可以在这里使用 grep)

最佳答案

总是有普通的 for 循环:

var valuesArr = ["v1","v2","v3","v4","v5"],
removeValFromIndex = [0,2,4];

for (var i = removeValFromIndex.length -1; i >= 0; i--)
valuesArr.splice(removeValFromIndex[i],1);

以相反的顺序执行 removeValFromIndex,您可以 .splice() 而不会弄乱尚未删除的项目的索引。

请注意,在上面我使用了带有方括号的数组文字语法来声明两个数组。这是推荐的语法,因为 new Array() 的使用可能会造成混淆,因为它会根据您传入的参数数量做出不同的响应。

编辑:刚刚看到您对另一个关于索引数组不一定按任何特定顺序排列的答案的评论。如果是这种情况,请在开始之前将其按降序排序:

removeValFromIndex.sort(function(a,b){ return b - a; });

然后使用您喜欢的任何循环/$.each()/等方法。

关于javascript - 从 Javascript/jQuery 中的数组中删除多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9425009/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com