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.

questionAnswers(5)

yourAnswerToTheQuestion