Emenda de uma matriz Javascript a partir do retorno de chamada passado para forEach
Eu tenho esse código que deve iterar sobre cada item em uma matriz, removendo itens com base em alguma condição:
//iterate over all items in an array
//if the item is "b", remove it.
var array = ["a", "b", "c"];
array.forEach(function(item) {
if(item === "b") {
array.splice(array.indexOf(item), 1);
}
console.log(item);
});
Saída desejada:
a
b
c
Saída real:
a
b
Obviamente, o método forEach nativo não verifica após cada iteração se o item foi excluído; portanto, se for, o próximo item será ignorado. Existe uma maneira melhor de fazer isso, além de substituir o método forEach ou implementar minha própria classe para usar em vez de uma matriz?
Editar - além do meu comentário, suponho que a solução seja usar apenas um padrão para loop. Sinta-se à vontade para responder se tiver uma maneira melhor.