Die Verwendung der for...in
Schleife für ein Array ist nicht falsch, obwohl ich mir vorstellen kann, warum Ihnen jemand das gesagt hat:
1.) Es gibt bereits eine Funktion oder Methode höherer Ordnung, die diesen Zweck für ein Array hat, aber mehr Funktionalität und schlankere Syntax hat, genannt 'forEach': Array.prototype.forEach(function(element, index, array) {} );
2.) Arrays haben immer eine Länge, aber for...in
und forEach
nicht eine Funktion für einen beliebigen Wert auszuführen, ist 'undefined'
nur für die Indizes , die einen Wert definiert haben. Wenn Sie also nur einen Wert zuweisen, führen diese Schleifen eine Funktion nur einmal aus. Da ein Array jedoch aufgelistet ist, hat es immer eine Länge bis zum höchsten Index, der einen definierten Wert hat. Diese Länge kann jedoch bei Verwendung dieser Werte unbemerkt bleiben Schleifen.
3.) Der Standard für die Schleife führt eine Funktion so oft aus, wie Sie in den Parametern definiert haben. Da ein Array nummeriert ist, ist es sinnvoller zu definieren, wie oft Sie eine Funktion ausführen möchten. Im Gegensatz zu den anderen Schleifen kann die for-Schleife dann für jeden Index im Array eine Funktion ausführen, unabhängig davon, ob der Wert definiert ist oder nicht.
Im Wesentlichen können Sie jede Schleife verwenden, aber Sie sollten sich genau daran erinnern, wie sie funktionieren. Verstehen Sie die Bedingungen, unter denen sich die verschiedenen Schleifen wiederholen, ihre getrennten Funktionen und stellen Sie fest, dass sie für unterschiedliche Szenarien mehr oder weniger geeignet sind.
Es kann auch als eine bessere Vorgehensweise angesehen werden, die forEach
Methode als die for...in
Schleife im Allgemeinen zu verwenden, da sie einfacher zu schreiben ist und über mehr Funktionen verfügt. Daher möchten Sie möglicherweise die Gewohnheit haben, nur diese Methode und den Standard für, aber für Ihre zu verwenden Anruf.
Siehe unten, dass die ersten beiden Schleifen die Anweisungen console.log nur einmal ausführen, während der Standard für die Schleife die Funktion so oft ausführt, wie angegeben, in diesem Fall 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]