对于reduce方法,如何使用带比较运算符的箭头函数?

时间:2016-12-27 17:41:35

标签: javascript eslint

将ESLint与Airbnb规则一起使用,我无法通过比较运算符获得reduce方法。

在下面的代码中,名为 data 的数组包含对象,每个对象都有一个名为 id 的属性。 ESLint抛出的错误消息是:

const maxId = data.reduce((prev, current) => {
  return prev.id > current.id ? prev.id : current.id;
});
  

ESLint错误:围绕箭头体的箭头体型/意外的块语句。

 const maxId = data.reduce((prev, current) => 
   prev.id > current.id ? prev.id : current.id);
  

ESLint错误:无混淆箭头/箭头功能与条件表达式含糊不清。

const maxId = data.reduce(function (prev, current) {
  return prev.id > current.id ? prev.id : current.id;
});
  

ESLint错误:prefer-arrow-callback / Unexpected function expression。

那我怎么能让它发挥作用呢?

2 个答案:

答案 0 :(得分:17)

将身体包裹在括号中,使其不会让人感到困惑":

{{1}}

答案 1 :(得分:2)

@Felix有解决linter问题的解决方案,但要使你的脚本在功能上运行,你应该使用

const maxId = data.reduce((prev, current) => Math.max(prev, current.id), -Infinity);
//                                                    ^^^^             ^^^^^^^^^^^

可用于除{1}和2之外的data个数组。