Loop Over Array in Javascript
JavascriptArraysLoopsFor LoopForeachJavascript Problem Overview
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);
};
Javascript Solutions
Solution 1 - Javascript
> 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 )