在Javascript中循环数组

Pet*_*eGO 26 javascript arrays foreach loops for-loop

我正在使用Google Chrome的控制台窗口来尝试找出为什么我无法在javascript中循环遍历数组.

我有一个调用的javascript对象moveResult,如下所示:

在此输入图像描述

我正试图MoveParts在这样的javascript中循环:

for (var movePart in moveResult.MoveParts) {
    console.log(movePart.From);
};
Run Code Online (Sandbox Code Playgroud)

我总是得到undefined而不是实际价值.但是,如果我尝试显式访问第一项,我会得到我想要的,如下所示:

console.log(moveResult.MoveParts[0].From);
Run Code Online (Sandbox Code Playgroud)

结果是"b1".

为什么我的循环不起作用?

我也试过一个foreach:

moveResult.MoveParts.foreach(function (movePart) {
    console.log(movePart.From);
};
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 12

我试图在javascript中循环移动MoveParts,如下所示:

for (var movePart in moveResult.MoveParts) {
    console.log(movePart.From);
};
Run Code Online (Sandbox Code Playgroud)

我总是得到undefined而不是实际值.

不要使用for-in循环数组,这不是它的用途.for-in用于循环对象属性.这个答案显示了循环数组的各种方法.

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 )
Run Code Online (Sandbox Code Playgroud)