javascript - JS ajoute plusieurs propriétés dynamiques aux objets
仅有的幸福
仅有的幸福 2017-06-26 10:51:28
0
5
905
let Obj={};

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

Personnellement, je pense que vous pouvez utiliser Object.assign() pour fusionner. Existe-t-il une autre bonne méthode ?

仅有的幸福
仅有的幸福

répondre à tous(5)
小葫芦
arr.reduce((prev, curr) => Object.assign(prev, curr), {})
小葫芦
arr.reduce((prev, next) => {
    Object.keys(next).forEach((item) => {
         prev[item] = next[item]        
    })
    return prev
}, {})
代言

Les solutions de

@冴宇 et @cool_zjy sont similaires, mais elles génèrent toutes deux un nouvel objet. Selon le sens de la question d'origine, reduce 的初始值传入 Obj 代替 {} va bien. Le premier ne nécessite pas de fonctionnalités ES6, le second oui.

La méthode de

@hsfzxjy semble simple, mais elle générera beaucoup d'objets intermédiaires, donc l'efficacité ne devrait pas être très bonne.

Object.assign La solution devrait être la plus simple. Bien sûr, peut-être qu'une API plus simple peut être trouvée dans la bibliothèque Lodash pour l'implémenter.

给我你的怀抱

Laxatif. L'utilisation de l'ES6 Spread Operator peut être plus concise, mais l'essence est la même

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

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

洪涛

Question et réponse d'abord, utilisez Object.assign() pour fusionner, je ne sais pas s'il existe d'autres bonnes méthodes

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal