Es gibt zwei Möglichkeiten, können Sie eine Schleife über ein Array: eine numerische Schleife über die indizierten Elemente eines Arrays oder ein for in
Schleife über die Objekteigenschaften eines Arrays.
var a = ['a','b'];
a[3] = 'e';
a[2] = 'd';
a.foo = function() { };
for(key in a)
console.log(key);
Das gibt 0 1 3 2 foo
, da, dass die Reihenfolge ist die Eigenschaften definiert wurden (aber es gibt kein Versprechen, dass Ihr Browser muss auch dieses Verhalten zeigen, entweder).
Bisher sehen numerische Schleifen besser aus, aber sie können keine Ersatzarrays, d. H. Arrays mit Lücken, handhaben. Die ES5 Array.forEach
lässt nicht spezifizierte Werte aus, während $.each
von jQuery eine numerische Schleife verwendet, die auf der length
-Eigenschaft basiert.
var a = [1,2];
a[1000000] = 4;
a[9000] = 3;
a.foo = function() {};
// outputs 0, 1, 9000, 1000000 -- note they are in order
a.forEach(function(elem, index){ console.log(index); })
// outputs 0, 1, 9000, 1000000 -- same as above
_.each(a, function(elem, index){ console.log(index); })
// outputs a million values and locks up your browser for a while
$.each(a, function(index){ console.log(index); })
Also, beide forEach
und $.each
Ihre Werte in Index-Reihenfolge zurück, aber forEach
und Unders scheinen überlegen für spärlichen Arrays, da sie Indizes ignorieren, die keinen Wert zugewiesen hatten.
Stellen Sie sicher, dass Sie wissen, was ein Array ist und was ein Objekt in JavaScript ist ... – Pointy