Javascript 如何使用reduce将数组转换为对象?

Javascript 如何使用reduce将数组转换为对象?,javascript,reduce,arrow-functions,Javascript,Reduce,Arrow Functions,多亏了另一个SO线程,我成功地通过reduce()将数组数组转换为对象。然而,我不明白为什么它会起作用 有人能解释一下为什么我不能只写=>acc[key]=value,{}?这个语法对我来说很有意义。但是它返回21!仅当我在对象分配和起始值之间添加,acc时,它才起作用。此外,ESLint声称这是对逗号运算符的意外使用 constmyarray=[[“player1”,30],“player2”,21]; const obj=myArray.reduce((acc[key,value])=>(

多亏了另一个SO线程,我成功地通过
reduce()
将数组数组转换为对象。然而,我不明白为什么它会起作用

有人能解释一下为什么我不能只写=>acc[key]=value,{}?这个语法对我来说很有意义。但是它返回
21
!仅当我在对象分配和起始值之间添加
,acc
时,它才起作用。此外,ESLint声称这是对逗号运算符的意外使用

constmyarray=[[“player1”,30],“player2”,21];
const obj=myArray.reduce((acc[key,value])=>(acc[key]=value,acc),{});
console.log(“obj:,obj”)使用
reduce()
时,需要从回调返回累加器
acc

你需要了解的第二件事是隐性回报。当使用箭头函数
=>
而不使用
{}
返回时,
=>
之后的值将成为该函数的返回值

您需要了解的另一件事是逗号运算符。在两个或多个表达式之间使用逗号运算符时,它将计算为最后一个表达式


console.log((“第一”、“第二”、“第三”)
因为添加
,acc
将返回
acc
对象。只有
acc[key]=value
将返回
value
而不是
acc
。第二个代码段有错误,您必须始终累积到acc中,否则您只返回一个值,就像有一个for循环,并返回它的最后一个值,而不是将所有的值聚合在一起