recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - JS ajoute plusieurs propriétés dynamiques aux objets

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 ?

仅有的幸福仅有的幸福2802 Il y a quelques jours901

répondre à tous(5)je répondrai

  • 高洛峰

    高洛峰2017-06-26 10:53:28

    arr.reduce((prev, curr) => Object.assign(prev, curr), {})

    répondre
    0
  • 高洛峰

    高洛峰2017-06-26 10:53:28

    arr.reduce((prev, next) => {
        Object.keys(next).forEach((item) => {
             prev[item] = next[item]        
        })
        return prev
    }, {})

    répondre
    0
  • 代言

    代言2017-06-26 10:53:28

    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.

    répondre
    0
  • 给我你的怀抱

    给我你的怀抱2017-06-26 10:53:28

    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)

    répondre
    0
  • PHP中文网

    PHP中文网2017-06-26 10:53:28

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

    répondre
    0
  • Annulerrépondre