Usar o for...in
loop para uma matriz não está errado, embora eu possa adivinhar por que alguém lhe disse isso:
1.) Já existe uma função ou método de ordem superior que tem esse objetivo para uma matriz, mas tem mais funcionalidade e sintaxe mais enxuta, chamada 'forEach': Array.prototype.forEach(function(element, index, array) {} );
2.) Matrizes sempre ter um comprimento, mas for...in
e forEach
não executar uma função para qualquer valor que é 'undefined'
, apenas para os índices que têm um valor definido. Portanto, se você atribuir apenas um valor, esses loops executarão uma função apenas uma vez, mas, como uma matriz é enumerada, ela sempre terá um comprimento até o índice mais alto com um valor definido, mas esse comprimento poderá passar despercebido ao usá-los. rotações.
3.) O padrão para loop executará uma função quantas vezes você definir nos parâmetros e, como uma matriz é numerada, faz mais sentido definir quantas vezes você deseja executar uma função. Diferentemente dos outros loops, o loop for pode executar uma função para cada índice na matriz, independentemente de o valor estar definido ou não.
Em essência, você pode usar qualquer loop, mas lembre-se exatamente de como eles funcionam. Entenda as condições sob as quais os diferentes loops reiteram, suas funcionalidades separadas e perceba que serão mais ou menos apropriados para diferentes cenários.
Além disso, pode ser considerado uma prática melhor usar o forEach
método do que o for...in
loop em geral, porque é mais fácil escrever e tem mais funcionalidade, portanto, você pode adquirir o hábito de usar apenas esse método e padrão, mas seu ligar.
Veja abaixo que os dois primeiros loops executam apenas as instruções console.log uma vez, enquanto o loop for padrão executa a função quantas vezes for especificada, nesse caso, array.length = 6.
var arr = [];
arr[5] = 'F';
for (var index in arr) {
console.log(index);
console.log(arr[index]);
console.log(arr)
}
// 5
// 'F'
// => (6) [undefined x 5, 6]
arr.forEach(function(element, index, arr) {
console.log(index);
console.log(element);
console.log(arr);
});
// 5
// 'F'
// => Array (6) [undefined x 5, 6]
for (var index = 0; index < arr.length; index++) {
console.log(index);
console.log(arr[index]);
console.log(arr);
};
// 0
// undefined
// => Array (6) [undefined x 5, 6]
// 1
// undefined
// => Array (6) [undefined x 5, 6]
// 2
// undefined
// => Array (6) [undefined x 5, 6]
// 3
// undefined
// => Array (6) [undefined x 5, 6]
// 4
// undefined
// => Array (6) [undefined x 5, 6]
// 5
// 'F'
// => Array (6) [undefined x 5, 6]