Loop Over Array in Javascript [duplicate]
I'm using Google Chrome's Console window to try and figure out why I'm not able to loop over an array in javascript.
I have a javascript object called moveResult
that looks like this:
I'm trying to loop over the MoveParts
in javascript like this:
for (var movePart in moveResult.MoveParts) {
console.log(movePart.From);
};
I always get undefined
instead of the actual value. However, If I try to access the first item explicitly I get what I want, like this:
console.log(moveResult.MoveParts[0].From);
The result of this is "b1"
.
Why isn't my loop working?
I've also tried a foreach:
moveResult.MoveParts.foreach(function (movePart) {
console.log(movePart.From);
};
Solution 1:
I'm trying to loop over the MoveParts in javascript like this:
for (var movePart in moveResult.MoveParts) { console.log(movePart.From); };
I always get undefined instead of the actual value.
Don't use for-in
to loop through arrays, that's not what it's for. for-in
is for looping through object properties. This answer shows various ways to loop through arrays.
The reason your for-in
didn't work is that movePart
is the key, not the actual entry, so if you were using an object (not an array!) you would have used moveResult.MoveParts[movePart].From
.
Your forEach
version only failed because:
-
It's
forEach
, notforeach
. Capitalization matters in JavaScript. -
You were missing the closing
)
on the function call.
The answer linked above has full examples of forEach
and others, but here's how yours should have looked:
moveResult.MoveParts.forEach(function (movePart) {
// Capital E -----------^
console.log(movePart.From);
});
// ^---- closing )