如何从javascript中的foreach循环中删除特定的数组元素

Nic*_*ick 8 javascript arrays

var fruit = ["apple","pear","pear","pear","banana"];
Run Code Online (Sandbox Code Playgroud)

如何从此阵列中删除所有"梨"水果?
我尝试了以下,但仍然有一个梨仍然存在:

for(var f in fruit) {
    if ( fruit[f] == "pear" ) {
        fruit.splice(f, 1);
    }
}

for(var f in fruit) {
    document.write(fruit[f]+"<br>");        
}
Run Code Online (Sandbox Code Playgroud)

输出:

apple 
pear 
banana
Run Code Online (Sandbox Code Playgroud)

我做错了什么?现场演示:http://jsfiddle.net/SbxHc/

Esa*_*ija 25

var fruit = ["apple", "pear", "pear", "pear", "banana"],
    i;

for (i = 0; i < fruit.length; ++i) {
    if (fruit[i] === "pear") {
        fruit.splice(i--, 1);
    }
}

console.log(fruit);
//["apple", "banana"]
Run Code Online (Sandbox Code Playgroud)

  • @Nick不,这是不可能的.无论如何,你永远不应该对数组使用`for..in`. (4认同)
  • ......并且上面的代码中的'++ i'或'i ++'并不重要,以防万一其他人在想. (3认同)

Tom*_*Tom 7

for (var i = fruit.length - 1; i > -1; i--) {
    if (fruit[i] == "pear")
        fruit.splice(i, 1);
}
Run Code Online (Sandbox Code Playgroud)

  • 那么`fruit [i] =="pear"`部分在哪里? (2认同)