Javascript 我能';t无法从此数组中删除此特定项

Javascript 我能';t无法从此数组中删除此特定项,javascript,arrays,items,Javascript,Arrays,Items,我知道这很简单,但试过搜索,找不到任何能解决我问题的东西 假设我有一个数组: var chicken = [10, 45, 150, 5000, 25000, 100000, 150000]; 我想把所有东西都拿走,除了25000块。所以我尝试了一个简单的迭代: for (var w=0; w<chicken.length; w++){ if (chicken[w]<25000 || chicken[w]>25000){ chicken.splice(w

我知道这很简单,但试过搜索,找不到任何能解决我问题的东西

假设我有一个数组:

 var chicken = [10, 45, 150, 5000, 25000, 100000, 150000];
我想把所有东西都拿走,除了25000块。所以我尝试了一个简单的迭代:

 for (var w=0; w<chicken.length; w++){
     if (chicken[w]<25000 || chicken[w]>25000){
    chicken.splice(w,1);
     }
 }

对于(var w=0;w它不起作用的原因是,当您拼接每个项目时,数组长度正在发生变化。如果要循环并删除,请使用反向循环:

for (var i = chicken.length - 1; i >= 0; i--) {
    if (chicken[i] !== 25000) chicken.splice(i, 1);
}

它不起作用的原因是,当您
拼接每个项目时,阵列长度正在改变。如果要循环并删除,请使用反向循环:

for (var i = chicken.length - 1; i >= 0; i--) {
    if (chicken[i] !== 25000) chicken.splice(i, 1);
}

这也适用于范围吗?例如“我想删除所有不在20000和30000之间的内容。”以25000作为需要使用的| |为例。@HiagoSerpa是的,只需将
if(chicken[I]!==25000)
替换为
if(chicken[I]<20000 | | chicken[I]>30000)
或任何其他filter@HiagoSerpa--是的-这将适用于从数组中进行的任何类型的筛选。关键是,当您删除时,您会更改数组的长度,因此最终您将得到一个不存在的索引(如果您正在计算)。这也适用于范围吗?例如“我要删除不在200之间的所有内容”00和30000。“以25000作为需要使用的| |”的示例。@HiagoSerpa是的,只需将
if(chicken[i]!==25000)
替换为
if(chicken[i]<20000 | | chicken[i]>30000)
或任何其他filter@HiagoSerpa--是的-这将适用于从数组中进行的任何类型的过滤。关键是,当你删除时,你会更改数组的长度,因此最终你会得到一个不存在的索引,如果你正在计算。