在javascript中循环数组

Loop Over Array in Javascript

本问题已经有最佳答案,请猛点这里访问。

我正在使用GoogleChrome的控制台窗口来尝试找出为什么我不能循环使用javascript的数组。

我有一个名为moveResult的javascript对象,它如下所示:

enter image description here

我尝试在javascript中循环使用MoveParts,如下所示:

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

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

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

其结果是"b1"

为什么我的循环不工作?

我也试过前臂:

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


I'm trying to loop over the MoveParts in javascript like this:

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

I always get undefined instead of the actual value.

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

您的for-in不工作的原因是movePart是键,而不是实际的条目,所以如果您使用的是对象(而不是数组!)你应该使用moveResult.MoveParts[movePart].From

您的forEach版本仅因以下原因失败:

  • forEach,不是forEach。在javascript中大写很重要。

  • 函数调用中缺少结束的)

  • 上面链接的答案有完整的forEach和其他示例,但下面是您应该看到的情况:

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


    尝试

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