在两个无限制语法违规之间捕获

Ant*_*ong 7 ecmascript-6 eslint eslint-config-airbnb

这是我的原始代码:

const buildTableContent = (settings) => {
  const entries = [];
  for (const key in settings) {
    for (const subkey in env[key]) {
Run Code Online (Sandbox Code Playgroud)

settings 基本上是字典的字典

  {  
    'env': {'name': 'prod'}, 
    'sass: {'app-id': 'a123445', 'app-key': 'xxyyzz'}
  }
Run Code Online (Sandbox Code Playgroud)

它触发了以下AirBnb样式指南错误:

35:3错误for..in循环迭代整个原型链,这几乎不是你想要的.使用Object.{keys,values,entries},并迭代生成的数组无限制语法

所以我将代码更改为

const buildTableContent = (settings) => {
  const entries = [];
  for (const key of Object.keys(settings)) {
    for (const subkey of Object.keys(env[key])) {
Run Code Online (Sandbox Code Playgroud)

如建议.

现在,当我跑步时lint,我得到了这个:

35:3错误迭代器/生成器需要再生器 - 运行时,这对于本指南来说太重了.另外,应避免循环,以支持数组迭代无限制语法

所以它看起来像他们违反了一些皮棉风格.

我该如何解决这个问题?

log*_*yth 12

你想用

Object.keys(settings).forEach(key => {
  Object.keys(env[key]).forEach(subkey => {
Run Code Online (Sandbox Code Playgroud)

或者可能Object.entriesObject.values取决于你是否真的想要钥匙.

  • 为什么首选使用 forEach ? (14认同)
  • 我正在使用 redux-saga,我必须使用yield 关键字顺序调用 api。yield 不能在 forEach 的函数回调中使用,因为回调不是生成器函数。所以我陷入了问题中提到的两个错误。有出路吗 ? (2认同)
  • 'no-restricted-syntax': ...是的,我把它关掉了 (2认同)