2014-12-23 2 views
10

Я использую окно консоли Google Chrome, чтобы выяснить, почему я не могу перебрать массив в javascript.Loop Over Array в Javascript

У меня есть яваскрипт объект под названием moveResult который выглядит следующим образом:

enter image description here

Я пытаюсь петля над MoveParts в JavaScript, как это:

for (var movePart in moveResult.MoveParts) { 
    console.log(movePart.From); 
}; 

Я всегда получаю undefined вместо фактического значения. Однако, если я пытаюсь получить доступ первый пункт явно я получаю то, что я хочу, как это:

console.log(moveResult.MoveParts[0].From); 

Результатом этого является "b1".

Почему моя петля не работает?

Я также попробовал Еогеасп:

moveResult.MoveParts.foreach(function (movePart) { 
    console.log(movePart.From); 
}; 

ответ

6

Я пытаюсь петлю над MoveParts в JavaScript, как это:

for (var movePart in moveResult.MoveParts) { 
    console.log(movePart.From); 
}; 

Я всегда получаю неопределенными вместо реальная стоимость.

Не используйте for-in для перебора массивов, это не то, для чего оно предназначено. for-in предназначен для обработки свойств объекта. This answer shows various ways to loop through arrays.

Причина ваш for-in не работает, что movePart является ключ, а не фактическая запись, так что если вы используете объект (не массив!) Вы бы использовали moveResult.MoveParts[movePart].From.

Ваша версия forEach только не потому, что:

  1. Это forEach, не foreach. Капитализация имеет значение в JavaScript.

  2. Вам не удалось закрыть ) по вызову функции.

Ответ связан выше, имеет полные примеры forEach и других, но вот как ваш должен был выглядеть:

moveResult.MoveParts.forEach(function (movePart) { 
    // Capital E -----------^ 
     console.log(movePart.From); 
    }); 
// ^---- closing) 
+0

Как Разъяснения здесь: Http: // StackOverflow .com/questions/9329446/for-each-over-a-array-in-javascript –

-1

попробовать

moveResult.MoveParts.map(function (movePart) { 
    console.log(movePart.From); 
}; 
+0

Внимание: 'Array.prototype.map' не существует в старых браузерах. http://kangax.github.io/compat-table/es5/#Array.prototype.map – Halcyon