recherche

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

javascript - Comment fusionner des objets avec la même valeur clé dans un tableau et mettre différentes valeurs dans un tableau après la fusion

Initialement
var ancien = [

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

]
Le résultat souhaité
var new = [

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

]

伊谢尔伦伊谢尔伦2807 Il y a quelques jours728

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

  • 学习ing

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

    Pour référence

    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]}))

    répondre
    0
  • 大家讲道理

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

    Le tableau d'origine est

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

    Attendez-vous à obtenir

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

    Réalisé

    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
            }
        })
    }

    Courez simplement getNew(old)

    répondre
    0
  • Annulerrépondre