Ecmascript 6 夹在两个无限制语法冲突之间

Ecmascript 6 夹在两个无限制语法冲突之间,ecmascript-6,eslint,eslint-config-airbnb,Ecmascript 6,Eslint,Eslint Config Airbnb,这是我的原始代码: const buildTableContent = (settings) => { const entries = []; for (const key in settings) { for (const subkey in env[key]) { settings基本上是一本字典的字典 { 'env': {'name': 'prod'}, 'sass: {'app-id': 'a123445', 'app-key': 'xx

这是我的原始代码:

const buildTableContent = (settings) => {
  const entries = [];
  for (const key in settings) {
    for (const subkey in env[key]) {
settings
基本上是一本字典的字典

  {  
    'env': {'name': 'prod'}, 
    'sass: {'app-id': 'a123445', 'app-key': 'xxyyzz'}
  }
它触发了以下AirBnb样式的导向错误:

35:3错误,..in循环在整个原型链上迭代, 事实上,这绝对不是你想要的。使用 对象。{键、值、条目},并在结果数组上迭代 无限制语法

所以我把代码改成

const buildTableContent = (settings) => {
  const entries = [];
  for (const key of Object.keys(settings)) {
    for (const subkey of Object.keys(env[key])) {
正如建议的那样

现在,当我运行
lint
时,我得到了以下结果:

35:3错误迭代器/生成器需要再生器运行时,这对于本指南来说太重了,不允许使用它们。分别地 应避免循环,以利于数组迭代 无限制语法

因此,在我看来,无论哪种方式,他们都违反了某些皮棉风格

如何解决此问题?

您希望使用

Object.keys(settings).forEach(key => {
  Object.keys(env[key]).forEach(subkey => {

或者可能是
Object.entries
Object.values
,这取决于您是否真正需要这些键。

我正在使用redux saga,其中我必须使用yield关键字顺序调用api。由于forEach的回调函数不是生成器函数,因此不能在函数回调中使用yield。因此,我遇到了两个错误问题中提到的。有出路吗?@anuragb26哪条规则?我可能会把它关掉。‘no-restricted-syntax’:……是的,我把它关掉了off@anuragb26为了使用yield,您可以对(elemArray的常量){yield fn()}执行类似操作。为什么首选使用forEach?