我正在使用谷歌浏览器的控制台窗口试图弄清楚为什么我无法在javascript中循环数组。
我有一个名为moveResult
的javascript对象,如下所示:
我正试图在这样的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);
};
答案 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
版本仅失败,原因是:
它是forEach
,而不是foreach
。资本化在JavaScript中很重要。
您错过了函数调用的结束)
。
上面提到的答案有forEach
和其他人的完整示例,但这是你的看法:
moveResult.MoveParts.forEach(function (movePart) {
// Capital E -----------^
console.log(movePart.From);
});
// ^---- closing )
答案 1 :(得分:-2)
试
moveResult.MoveParts.map(function (movePart) {
console.log(movePart.From);
};