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}),
{}
)
所以你在这里做的是 - 将每个元素解构为 key
和 value
,然后将当前累加器与仅由 key-value
组成的新对象组合对.
你做错了什么:你不能按原样使用表达式作为对象键,但你必须将它们括在方括号中。
所以这个 {[curr.test]: curr.test2}
会起作用。
我有一个像这样的数组:
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}),
{}
)
所以你在这里做的是 - 将每个元素解构为 key
和 value
,然后将当前累加器与仅由 key-value
组成的新对象组合对.
你做错了什么:你不能按原样使用表达式作为对象键,但你必须将它们括在方括号中。
所以这个 {[curr.test]: curr.test2}
会起作用。