Loop Over Array в Javascript

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

У меня есть объект 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".

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

Я также попробовал foreach:

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

Ответ 1

Я пытаюсь перебрать MoveParts в javascript следующим образом:

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

Я всегда получаю undefined вместо фактического значения.

Не используйте for-in для перебора массивов, для чего это не так. for-in предназначен для перебора свойств объекта. Этот ответ показывает различные способы перебора массивов.

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

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

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

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

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

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

Ответ 2

попробовать

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