Javascript 如何使用reduce将数组转换为对象?
多亏了另一个SO线程,我成功地通过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])=>(
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循环,并返回它的最后一个值,而不是将所有的值聚合在一起