我有两个数组。第一个数组包含一些值,而第二个数组包含应从第一个数组中删除的值的索引。例如:
var valuesArr = new Array("v1","v2","v3","v4","v5");
var removeValFromIndex = new Array(0,2,4);
我想删除索引中存在的值0,2,4
from valuesArr
。我以为是本土人splice
方法可能会有所帮助,所以我想出了:
$.each(removeValFromIndex,function(index,value){
valuesArr.splice(value,1);
});
但这没有用,因为每次之后splice
,中的值的索引valuesArr
是不同的。我可以通过使用临时数组并将所有值复制到第二个数组来解决这个问题,但我想知道是否有任何本机方法可以传递多个索引以从数组中删除值。
我更喜欢 jQuery 解决方案。 (不确定是否可以使用grep
这里)
总有那么朴素的旧事for
loop:
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()
使用可能会令人困惑,因为它根据您传入的参数数量做出不同的响应。
EDIT:刚刚看到您对另一个关于索引数组不一定按任何特定顺序的答案的评论。如果是这种情况,请在开始之前将其按降序排序:
removeValFromIndex.sort(function(a,b){ return b - a; });
并遵循任何循环 /$.each()
/等等你喜欢的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)