ESLint建议包装..并使用Object。{keys,values,entries}

时间:2018-04-23 09:30:46

标签: javascript eslint

我有这个功能:

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

您能否解释一下我应该如何处理我的功能以避免ESLint检测到错误?它建议在if语句中包装.. in以从原型中过滤掉不需要的属性,并使用Object。{keys,values,entries}进行迭代。

1 个答案:

答案 0 :(得分:3)

  

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

这意味着

for (const key in state.report.data.report) {
  if (state.report.data.report.hasOwnProperty(key)) {
    labels.push(key);
  }
}
  

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

这意味着

for (const key in Object.keys(state.report.data.report)) {
  labels.push(key);
}

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

getLabels(state) {
  return Object.keys(state.report.data.report || {});
},