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

Javascript 对于reduce方法,如何使用带有比较运算符的箭头函数?,javascript,eslint,Javascript,Eslint,使用带有Airbnb规则的ESLint,我无法得到一个使用比较运算符的reduce方法 在下面的代码中,名为data的数组包含对象,每个对象都有一个名为id的属性。ESLint抛出的错误消息如下: const maxId = data.reduce((prev, current) => { return prev.id > current.id ? prev.id : current.id; }); ESLint错误:箭头体样式/围绕箭头体的意外块语句 ESLint错误:没有混

使用带有Airbnb规则的ESLint,我无法得到一个使用比较运算符的reduce方法

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

const maxId = data.reduce((prev, current) => {
  return prev.id > current.id ? prev.id : current.id;
});
ESLint错误:箭头体样式/围绕箭头体的意外块语句

ESLint错误:没有混淆的箭头/箭头函数与条件表达式一起使用

ESLint错误:首选箭头回调/意外的函数表达式


那么,我如何才能让它起作用呢?

将正文用括号括起来,以避免“混淆”:


@Felix有解决linter问题的方法,但是要使脚本在功能上正常工作,您应该使用

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

这将适用于大小不同于1和2的
数据
数组。

您是否尝试过
(prev,current)=>(prev.id>current.id?prev.id:current.id)
?当然,您也可以禁用
无混淆箭头规则。这很有效,非常感谢!非常感谢。我发现Math.max()更具可读性。[线程](stackoverflow.com/questions/1232345/speed and style of math max vs javascript中的三元运算符)是的,但减速机的实际问题是,您希望
prev
是一个对象,而实际上它将是一个数字。如果它仍然不起作用,则需要将
allowParens
设置为true,如下所示:
“无混淆箭头”:.eslintrc中的[“error”,{“allowParens”:true}]
const maxId = data.reduce(function (prev, current) {
  return prev.id > current.id ? prev.id : current.id;
});
(prev, current) => (prev.id > current.id ? prev.id : current.id)
const maxId = data.reduce((prev, current) => Math.max(prev, current.id), -Infinity);
//                                                    ^^^^             ^^^^^^^^^^^