Palavras-chave: array, foreach, undefined
Arrays em javascript tem um comportamento curioso. Você pode instanciá-los com um tamanho pré-definido ou incrementá-los / decrementá-los à medida que achar necessário.
Mas, existe uma situação peculiar. Imagine a seguinte situação:
var a = new Array(); a [3] = 'd';
Ao definir a posição 3 como a letra “d” o javascript criou juntamente todas as três posições que a antecedem (0, 1 e 2). Veja o que acontece quando itera sobre esse array utilizando um for comum:
for( i = 0; i < a.length; i++ ) { alert( a[i] ); }
O resultado será três registros “undefined” antes da posição 3. Então, como fazer para recuperar apenas os valores que tiverem tiverem sido definidos? A solução é o que, em outras linguagens, chamamos de foreach. Sua utilização faz uso do operador for de uma maneira diferente:
for( i in a ) { alert( a[i] ); }
O foreach em Javascript irá navegar em todos os valores do Array a
que não forem undefined e atribuirá em i
o índice desses valores no array.