【问题标题】:JavaScript alternative to "for each" loopJavaScript 替代“for each”循环
【发布时间】:2012-09-20 04:16:22
【问题描述】:

根据for each...in loop 的 MDN 页面,此构造已被弃用。有没有做同样事情的替代品? for...of loop 不会迭代非整数(自己的可枚举)属性。如果没有替代品,他们为什么要弃用它呢?

【问题讨论】:

标签: javascript for-loop foreach


【解决方案1】:

您可以使用新的 ECMAScript 5th Edition 功能:

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

【讨论】:

  • ^ 这就是我在使用 forinstatement 时从 eslint 解决 no-restricted-syntax 错误的方法。
【解决方案2】:

是否有替代方案可以做完全相同的事情?

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

【讨论】:

  • 是的,我想只有这个变通方法,它并不是“for each”的真正语言替代品。所以他们不应该弃用它,对吧?
  • @Benedictus — 不,它在 JavaScript 1.0 中。 Netscape 2 支持它!
【解决方案3】:

要遍历对象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]);
}

【讨论】:

    猜你喜欢
    • 2015-04-08
    • 2015-08-28
    • 2016-04-18
    • 2015-11-12
    • 1970-01-01
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多