Loop Over Array in Javascript

JavascriptArraysLoopsFor LoopForeach

Javascript 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:

enter image description here

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:

  1. It's forEach, not foreach. Capitalization matters in JavaScript.

  2. 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 )

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPeteGOView Question on Stackoverflow
Solution 1 - JavascriptT.J. CrowderView Answer on Stackoverflow