Usar el for...in
bucle para una matriz no está mal, aunque puedo adivinar por qué alguien te dijo eso:
1.) Ya existe una función o método de orden superior que tiene ese propósito para una matriz, pero tiene más funcionalidad y una sintaxis más simple, llamada 'forEach': Array.prototype.forEach(function(element, index, array) {} );
2.) Las matrices siempre tienen una longitud, pero for...in
y forEach
no ejecutan una función para cualquier valor que es'undefined'
, sólo para los índices que tienen un valor definido. Entonces, si solo asigna un valor, estos bucles solo ejecutarán una función una vez, pero dado que se enumera una matriz, siempre tendrá una longitud hasta el índice más alto que tenga un valor definido, pero esa longitud podría pasar desapercibida al usar estos bucles
3.) El estándar for loop ejecutará una función tantas veces como usted defina en los parámetros, y dado que una matriz está numerada, tiene más sentido definir cuántas veces desea ejecutar una función. A diferencia de los otros bucles, el bucle for puede ejecutar una función para cada índice de la matriz, ya sea que el valor esté definido o no.
En esencia, puede usar cualquier bucle, pero debe recordar exactamente cómo funcionan. Comprenda las condiciones bajo las cuales los diferentes bucles reiteran, sus funcionalidades separadas, y tenga en cuenta que serán más o menos apropiados para diferentes escenarios.
Además, puede considerarse una mejor práctica usar el forEach
método que el for...in
bucle en general, porque es más fácil de escribir y tiene más funcionalidad, por lo que es posible que desee acostumbrarse a usar solo este método y estándar para, pero su llamada.
Vea a continuación que los dos primeros bucles solo ejecutan las instrucciones console.log una vez, mientras que el bucle estándar para ejecuta la función tantas veces como se especifique, en este 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]