suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript – So führen Sie Objekte mit demselben Schlüsselwert in einem Array zusammen und fügen nach dem Zusammenführen unterschiedliche Werte in ein Array ein

Anfangs
var alt = [

{
    id: 1,
    name: "first"
},
{
    id: 2,
    name: "first"
},
{
    id: 3,
    name: "second"
},
{
    id: 4,
    name: "second"
}

]
Das gewünschte Ergebnis
var new = [

{
    a: [1, 2],
    b: "first"
},
{
    a: [3, 4],
    b: "second"
}

]

伊谢尔伦伊谢尔伦2807 Tage vor722

Antworte allen(2)Ich werde antworten

  • 学习ing

    学习ing2017-06-26 10:59:14

    供参考

    var new = Array.from(
      old.reduce((dict, item)=> {
        if (dict.has(item.name)) {
          dict.get(item.name).push(item.id)
        } else {
          dict.set(item.name, [item.id])
        }
        return dict
      }, new Map())
    ).map(item => ({a: item[1], b: item[0]}))

    Antwort
    0
  • 大家讲道理

    大家讲道理2017-06-26 10:59:14

    原数组是

    var old = [
        {
            id: 1,
            name: "first"
        },
        {
            id: 2,
            name: "first"
        },
        {
            id: 3,
            name: "second"
        },
        {
            id: 4,
            name: "second"
        }
    ]

    期望得到

    new = [
        {
            a: [1, 2],
            b: "first"
        },
        {
            a: [3, 4],
            b: "second"
        }
    ]

    实现

    var getNew = old => {
        let temp = old.reduce((acc, cur) => {
            if (acc[cur.name]){
                acc[cur.name].push(cur.id); 
            } else {
                acc[cur.name] = [cur.id]
            }
            return acc; 
        }, {});
        
        return Object.keys(temp).map(key => {
            return {
                a: temp[key],
                b: key
            }
        })
    }

    Just Run getNew(old)

    Antwort
    0
  • StornierenAntwort