L'uso del for...in
loop per un array non è sbagliato, anche se posso indovinare perché qualcuno ti ha detto che:
1.) Esiste già una funzione o metodo di ordine superiore che ha lo scopo di un array, ma ha più funzionalità e sintassi più snella, chiamata 'forEach': Array.prototype.forEach(function(element, index, array) {} );
2.) Gli array hanno sempre una lunghezza, ma for...in
e forEach
non eseguono una funzione per qualsiasi valore che è 'undefined'
, solo per gli indici che hanno un valore definito. Quindi, se si assegna un solo valore, questi loop eseguiranno una funzione una sola volta, ma poiché un array è elencato, avrà sempre una lunghezza fino all'indice più alto che ha un valore definito, ma quella lunghezza potrebbe passare inosservata quando si usano questi loop.
3.) Lo standard for loop eseguirà una funzione tutte le volte che si definisce nei parametri e poiché un array è numerato, ha più senso definire quante volte si desidera eseguire una funzione. A differenza degli altri loop, il ciclo for può quindi eseguire una funzione per ogni indice dell'array, indipendentemente dal fatto che il valore sia definito o meno.
In sostanza, puoi usare qualsiasi ciclo, ma dovresti ricordare esattamente come funzionano. Comprendi le condizioni in cui reiterano i diversi loop, le loro funzionalità separate e renditi conto che saranno più o meno appropriati per diversi scenari.
Inoltre, può essere considerato una pratica migliore utilizzare il forEach
metodo rispetto al for...in
ciclo in generale, perché è più facile da scrivere e ha più funzionalità, quindi potresti voler prendere l'abitudine di usare solo questo metodo e standard per, ma il tuo chiamata.
Vedi sotto che i primi due loop eseguono le istruzioni console.log solo una volta, mentre lo standard per loop esegue la funzione tutte le volte che è stato specificato, in questo 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]