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,如下所示:
Run Code Online (Sandbox Code Playgroud)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 )
Run Code Online (Sandbox Code Playgroud)