473 Stimmen

JavaScript for...in vs for

Denkst du, dass es einen großen Unterschied zwischen for...in und for-Schleifen gibt? Welche Art von "for" ziehst du vor und warum?

Angenommen, wir haben ein Array von assoziativen Arrays:

var myArray = [{'key': 'value'}, {'key': 'value1'}];

Also können wir durchlaufen:

for (var i = 0; i < myArray.length; i++)

Und:

for (var i in myArray)

Ich sehe keinen großen Unterschied. Gibt es Leistungsprobleme?

13 Stimmen

Beachten Sie, dass wir auch ab JS 1.6 haben: myArray.forEach(callback[, thisarg]).

14 Stimmen

@ Benji array.forEach ist tatsächlich in ES5.

2 Stimmen

In einer for-in Schleife benötigen Sie eine bedingung, die so aussieht: if(myArray.hasOwnProperty(i)){true}

0voto

achecopar Punkte 364

Es besteht ein wichtiger Unterschied zwischen beiden. Das for-in iteriert über die Eigenschaften eines Objekts, sodass es bei einem Array nicht nur über seine Elemente iteriert, sondern auch über die "remove"-Funktion, die es hat.

for (var i = 0; i < myArray.length; i++) { 
    console.log(i) 
}

//Ausgabe
0
1

for (var i in myArray) { 
    console.log(i) 
} 

// Ausgabe
0 
1 
remove

Sie könnten das for-in mit einem if(myArray.hasOwnProperty(i)) verwenden. Dennoch ziehe ich es immer vor, dies zu vermeiden und stattdessen die for(;;)-Anweisung zu verwenden, wenn ich über Arrays iteriere.

0voto

Yash Srivastava Punkte 742

Auch wenn sie sehr ähnlich sind, gibt es einen kleinen Unterschied:

var array = ["a", "b", "c"];
array["abc"] = 123;
console.log("Standard for loop:");
for (var index = 0; index < array.length; index++)
{
  console.log(" array[" + index + "] = " + array[index]); //Standard for loop
}

in diesem Fall ist die Ausgabe:

STANDARD FOR LOOP:

ARRAY[0] = A

ARRAY[1] = B

ARRAY[2] = C

console.log("For-in loop:");
for (var key in array)
{
  console.log(" array[" + key + "] = " + array[key]); //For-in loop output
}

während die Ausgabe in diesem Fall lautet:

FOR-IN LOOP:

ARRAY[1] = B

ARRAY[2] = C

ARRAY[10] = D

ARRAY[ABC] = 123

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X