ESLint 建议将 for.. in 包装起来并使用 Object.{keys,values,entries}

Olg*_*a B 0 javascript eslint

我有这个功能:

getLabels(state) {
  const labels = [];
  if (state.report.data.report) {
    for (const key in state.report.data.report) {
      labels.push(key);
    }
  }
  return labels;
},
Run Code Online (Sandbox Code Playgroud)

你能解释一下我应该用我的函数做什么来避免 ESLint 检测到错误吗?它建议在 if 语句中包装 for.. 以从原型中过滤不需要的属性并使用 Object.{keys,values,entries} 进行迭代。

Har*_*ple 5

在 if 语句中包装 for.. 以从原型中过滤不需要的属性

这意味着

for (const key in state.report.data.report) {
  if (state.report.data.report.hasOwnProperty(key)) {
    labels.push(key);
  }
}
Run Code Online (Sandbox Code Playgroud)

并使用 Object.{keys,values,entries} 进行迭代

这意味着

for (const key in Object.keys(state.report.data.report)) {
  labels.push(key);
}
Run Code Online (Sandbox Code Playgroud)

但是您的代码正在推送key而不是属性的值,因此可以替换为

getLabels(state) {
  return Object.keys(state.report.data.report || {});
},
Run Code Online (Sandbox Code Playgroud)