我有一个像:
这样的数组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 :我已经通过不使用箭头功能实现了我的尝试,我想知道为什么上述方法无法正常工作
答案 0 :(得分:3)
就像
一样简单a.reduce(
(acc, {test: key, test2: value}) => Object.assign({}, acc, {[key]: value}),
{}
)
所以你在这里做的是 - 将每个元素解构为key
和value
,然后将当前累加器与仅由key-value
对组成的新对象组合。
你做错了什么:你不能按原样使用表达式作为对象键,但你必须将它们包装在方括号中。
所以这个{[curr.test]: curr.test2}
会起作用。