E6 箭头函数将对象数组缩减为单个对象

E6 arrow functions reduce an array of object to single object

我有一个像这样的数组:

a=[{'test':1,'test2':'2'},{'test':3,'test2':'4'}]

我正在尝试将此数组缩减为一个对象

预期输出

{1:2,3:4}

我试过:

let newObj = a.reduce((pre,curr)=>Object.assign({},{curr.test:curr.test2}))//unexpected token at .
let newObj = a.reduce((pre,curr)=>Object.assign({},{curr['test']:curr['test2']}))//unexpected token at [

P.S: 我已经通过不使用箭头函数实现了我正在尝试的,我想知道为什么上面的方法不起作用

就这么简单

a.reduce(
    (acc, {test: key, test2: value}) => Object.assign({}, acc, {[key]: value}),
    {}
)

所以你在这里做的是 - 将每个元素解构为 keyvalue,然后将当前累加器与仅由 key-value 组成的新对象组合对.

你做错了什么:你不能按原样使用表达式作为对象键,但你必须将它们括在方括号中。

所以这个 {[curr.test]: curr.test2} 会起作用。