Ich habe ein Array mit einer Länge von 3.
So was:
var numbers = [4, 5, 6];
und ich möchte verwenden for .. in
ein Array durchlaufen (Mozilla sagt: Hinweis: for..in sollte nicht zum Durchlaufen eines Arrays verwendet werden, bei dem die Indexreihenfolge wichtig ist.). Bei dieser Ausgabe geht es jedoch nicht um die Indexreihenfolge, sondern um den letzten Schlüsselwert, der als angezeigt wird map
in Safari.
Also habe ich unten eine Testfunktion erstellt:
var test = function(array) {
var arr = array.slice(0);
for(var key in arr){
console.log(key);
}
}
Safari kehrt zurück 0
, 1
, 2
, map
.
Chrome kehrt zurück 0
, 1
, 2
.
Safari
Chrom
Warum iteriert Safari ein viertes Mal mit einem Schlüssel von map
und Chrom nicht? Kann jemand erklären, was hier los ist?
Antworten:
1 für die Antwort № 1for (x in array)
iteriert alle iterierbaren Eigenschaften von array
. Es werden nicht nur Array-Elemente iteriert, weshalb Sie dieses Formular nicht verwenden sollten, um nur Array-Elemente zu iterieren.
Anscheinend haben Sie eine Browserversion, die hat .map
als iterierbare Eigenschaft des Array-Objekts. Wenn Sie nur iterieren, während Arrays iteriert werden sollen mit:
for (var i = 0; i < array.length; i++)
dann haben Sie dieses Problem nicht, weil dies nur Array - Elemente iteriert, nicht alle iterierbaren Eigenschaften.