如何满足lint规则'array-callback-return'?

时间:2017-03-25 22:13:10

标签: ecmascript-6 eslint

这是我的第一次剪辑:

const planLimits = {plan1: {condition1: 50, ...}}

function initialisePlanLimits(planLimits) {
  const limits = new Map();
  Object.keys(planLimits).map((planId) => (
    const limitMap = new Map(Object.entries(planLimits[planId]));
    limits.set(planId, limitMap);
  ));
  return limits;
}

linter标记此错误:error Expected to return a value in this function array-callback-return

所以我改为这个版本:

function initialisePlanLimits(planLimits) {
  const limits = new Map();
  Object.keys(planLimits).map((planId) => (
    limits.set(planId, new Map(Object.entries(planLimits[planId])))
  ));
  return limits;
}

它引发了另一个错误Unexpected parentheses around single function argument having a body with no curly braces arrow-parens

我的问题:

1)我估计我可以通过坚持咖喱括号中的return null来修复我的第一个版本。但是有更好,更优雅的方式吗?在这种情况下,伪造的回报声明没有意义

2)为什么第二个版本失败了?是不是相当于第一个版本?

3 个答案:

答案 0 :(得分:2)

如果我使用forEach代替map,则不会导致array-callback-return lint错误

 Object.keys(planLimits).forEach((planId) => (
    const limitMap = new Map(Object.entries(planLimits[planId]));
    limits.set(planId, limitMap);
  ));

答案 1 :(得分:0)

关于使用“ forEach”的公认答案是正确的。请阅读以下ESLint documentation的说明,

数组有几种过滤,映射和折叠的方法。如果我们忘记在这些回调中编写return语句,那可能是一个错误。如果您不想使用返回值或不需要返回的结果,请考虑使用.forEach。

答案 2 :(得分:-1)

使用ReactJS的代码示例,它显示了一组元素......

  showclasses.map( (showclass, index) => {
      $('.' + showclass).show();
  });

我收到此错误...

  Expected to return a value in arrow function  array-callback-return

如果我向上面的函数添加一个返回值,则错误消失了,如下所示:

  showclasses.map( (showclass, index) => {
      return $('.' + showclass).show();
  });

map()功能强大。不要扔掉那个工具。