循环JavaScript对象的其他方法?

met*_*his 5 javascript ecmascript-6

下面的代码运行良好,但ESLint插件显示警告:"不允许使用'ForinStatement'"所以我想将其更改为其他方法来阻止警告消息:

    let count = 0;
    for (const key in groups) {
      if (Object.prototype.toString.call(groups[key]) === '[object Object]') {
        if ({}.hasOwnProperty.call(groups[key], 'users')) {
          count += groups[key].users.length;
        }
      }
    }
Run Code Online (Sandbox Code Playgroud)

rob*_*t-s 12

如果你的目标只是为了避免ESLint中的错误,我建议使用Object.keys(obj).forEach()我通常在我自己的项目中使用这种方法.

伪例如:

Object.keys(groups).forEach(key => {
    if (Object.prototype.toString.call(groups[key]) === '[object Object]') {
        if ({}.hasOwnProperty.call(groups[key], 'users')) {
            count += groups[key].users.length;
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,它完美地运作.但是要防止ESLint,您应该更改"Object.keys(groups).forEach(key => {"to"Object.keys(groups).forEach((key)=> {" (2认同)