在Javascript中循环数组

时间:2014-12-23 18:16:28

标签: javascript arrays loops for-loop foreach

我正在使用谷歌浏览器的控制台窗口试图弄清楚为什么我无法在javascript中循环数组。

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

enter image description here

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

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);
};

2 个答案:

答案 0 :(得分:10)

  

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

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. 您错过了函数调用的结束)

  3. 上面提到的答案有forEach和其他人的完整示例,但这是你的看法:

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

答案 1 :(得分:-2)

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