javascript - JS给对象添加多个动态属性
仅有的幸福
仅有的幸福 2017-06-26 10:51:28
[JavaScript讨论组]
let Obj={};

//给出一个数组
var arr = [
    {a: 'aa'},
    {b: 'bb'},
    {c: 'cc'}
]
//生成如下格式
Obj={
  a:'aa',
  b:'bb',
  c:'cc'
}

个人觉得可以使用Object.assign()来合并,不知道有没有其他好的方法?

仅有的幸福
仅有的幸福

全部回复(5)
高洛峰
arr.reduce((prev, curr) => Object.assign(prev, curr), {})
高洛峰
arr.reduce((prev, next) => {
    Object.keys(next).forEach((item) => {
         prev[item] = next[item]        
    })
    return prev
}, {})
代言

@冴羽 和 @cool_zjy 的方案类似,不过都是产生的一个新对象,按原题意,reduce 的初始值传入 Obj 代替 {} 就好。前者不需要 ES6 特性,后者需要。

@hsfzxjy 的方法看起来固然是简捷了,但是会产生好多中间对象,所以效率应该不会很好。

Object.assign 的方案应该是最简捷了,当然也许 Lodash 库中能找到一个更简单的 API 来实现。

给我你的怀抱

泻药。用 ES6 的 Spread Operator 可以更简洁,不过本质是一样的

let arr = [
    {a: 'aa'},
    {b: 'bb'},
    {c: 'cc'}
]

let obj = arr.reduce((x, y) => ({...x, ...y}), {})
console.log(obj)

PHP中文网

先自问自答,使用Object.assign()来合并,不知道有没有其他好的方法

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号