cari

Rumah  >  Soal Jawab  >  teks badan

javascript - JS menambah berbilang sifat dinamik pada objek

let Obj={};

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

Secara peribadi, saya rasa anda boleh menggunakan Object.assign() untuk bergabung.

仅有的幸福仅有的幸福2765 hari yang lalu884

membalas semua(5)saya akan balas

  • 高洛峰

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

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

    balas
    0
  • 高洛峰

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

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

    balas
    0
  • 代言

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

    Penyelesaian

    @冴宇 dan @cool_zjy adalah serupa, tetapi kedua-duanya menjana objek baharu Mengikut maksud soalan asal, reduce 的初始值传入 Obj 代替 {} tidak mengapa. Yang pertama tidak memerlukan ciri ES6, yang kedua memerlukannya.

    Kaedah

    @hsfzxjy nampaknya mudah, tetapi ia akan menjana banyak objek perantaraan, jadi kecekapan seharusnya tidak begitu baik.

    Object.assign Penyelesaiannya mestilah yang paling mudah Sudah tentu, mungkin API yang lebih mudah boleh didapati di perpustakaan Lodash untuk melaksanakannya.

    balas
    0
  • 给我你的怀抱

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

    Laksatif. Menggunakan Operator Spread ES6 boleh menjadi lebih ringkas, tetapi intipatinya adalah sama

    let arr = [
        {a: 'aa'},
        {b: 'bb'},
        {c: 'cc'}
    ]
    
    let obj = arr.reduce((x, y) => ({...x, ...y}), {})
    console.log(obj)

    balas
    0
  • PHP中文网

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

    Soal jawab dahulu, gunakan Object.assign() untuk bergabung, saya tidak tahu sama ada terdapat kaedah lain yang bagus

    balas
    0
  • Batalbalas