JavaScript替代“for each”循环

时间:2012-09-28 09:29:14

标签: javascript for-loop foreach

根据for each...in loop的MDN页面,不推荐使用此结构。是否存在完全相同的替代方案? for...of loop不会迭代非整数(自己的可枚举)属性。如果没有其他选择,为什么他们会弃用它呢?

3 个答案:

答案 0 :(得分:15)

要迭代对象obj的所有属性,您可以这样做:

for (var key in obj) {
   console.log(key, obj[key]);
}

如果您想避免继承属性,可以这样做:

for (var key in obj) {
   if (!obj.hasOwnProperty(key)) continue;
   console.log(key, obj[key]);
}

答案 1 :(得分:12)

您可以使用新的 ECMAScript第5版功能:

Object.keys(obj).forEach(function (key) {
    console.log(key, obj[key]);
});

答案 2 :(得分:3)

  

是否存在完全相同的替代方案?

for ... in循环,其中您在代码块中执行的第一件事就是将foo[propertyname]复制到变量。