【问题标题】:E6 arrow functions reduce an array of object to single objectE6 箭头函数将对象数组缩减为单个对象
【发布时间】:2016-09-23 22:51:22
【问题描述】:

我有一个类似的数组:

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:我已经通过不使用箭头函数实现了我正在尝试的目标,我想知道为什么上述方法不起作用

【问题讨论】:

    标签: arrays json ecmascript-6 arrow-functions


    【解决方案1】:

    就这么简单

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

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

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

    所以这个{[curr.test]: curr.test2} 可以工作。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 2020-08-13
    • 2018-01-05
    相关资源
    最近更新 更多