/ / Verwendung von for in mit Safari und Javascript (letzter Schlüsselwert ist map) - Javascript, Google-Chrome, Safari

Verwenden von for in mit Safari und Javascript (der letzte Schlüsselwert wird auf map gesetzt) ​​- javascript, google-chrome, safari

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

Safari


Chrom

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 № 1

for (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.