【问题标题】:return object with the same key and value from array从数组中返回具有相同键和值的对象
【发布时间】:2018-09-28 14:37:10
【问题描述】:

[1,2].reduce((accum,val) => ({val}) ,{})

我希望上面的 reduce 函数会返回 {1:1, 2:2} 但它没有,这是怎么回事?我不是返回了一个对象吗?

【问题讨论】:

    标签: javascript ecmascript-6


    【解决方案1】:

    您需要传播累加器(使用较新的 JS 或 babeljs)和computed property names

    console.log([1, 2].reduce((accum, val) => ({ ...accum, [val]: val }), {}));

    【讨论】:

      【解决方案2】:
      [1,2].reduce((accum,val) => { accum[val] = val
      return accum } ,{})
      

      这样就可以了。您没有引用起始对象。

      【讨论】:

        【解决方案3】:

        一种选择是使用Object.assign 添加新的属性和值

        var result = [1, 2].reduce((accum, val) => Object.assign(accum, {[val]: val}), {})
        console.log(result);

        文档:Object.assign

        【讨论】:

          【解决方案4】:

          使用可以这样写: 你需要传播累加器的价值。

          [1,2].reduce((accum,val) => ({...accum, [val]:val}) ,{})
          

          【讨论】:

            猜你喜欢
            • 2021-10-26
            • 2017-11-16
            • 2017-07-17
            • 1970-01-01
            • 2021-10-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多