Создание нового ключа из дочерних элементов в Json с помощью Javascript - PullRequest
0 голосов
/ 28 декабря 2018

Я хочу создать новый ключ из дочерних значений в json с ES6 / ES5.Я попытался с помощью стрелок, но я не смог получить результат.Во-первых, вы можете увидеть мою часть json ниже:

[  
   {  
      matchId:307,
      matchStatusId:5,
      matchHomeScore:0,
      matchAwayScore:0,
      matchTime:0,
      homeClubId:608,
      homeClub:{  
         clubId:608,
         clubName:"Annaba"
      },
      awayClubId:609,
      awayClub:{  
         clubId:609,
         clubName:"Bazer Sakhra"
      },
      leagues:[  
         {  
            leagueId:65,
            parentLeagueId:null,
            leagueName:"ALGERIA"
         },
         {  
            leagueId:66,
            parentLeagueId:65,
            leagueName:"Algeria Cup"
         }
      ]
   },
]

Я хочу создать новый родительский ключ.Он получит значения из значений дочерних элементов и объединит их.Номера дочерних элементов могут быть изменены.Не каждый раз 2 предмета. leagueGeneral: «АЛЖИР - Кубок Алжира»

   leaguesGeneral:"ALGERIA - Algeria Cup"   
   leagues: [  
      {  
         leagueId:65,
         parentLeagueId:null,
         leagueName:"ALGERIA"
      },
      {  
         leagueId:66,
         parentLeagueId:65,
         leagueName:"Algeria Cup"
      }
   ]

Я нашел этот метод.Но он сочетает в себе все от родителя.

data = data.map(function (x) {
    var keys = Object.keys(x);
    x.newKeyValue = keys.map(key => x[key]).join('-');
    return x;
});

1 Ответ

0 голосов
/ 28 декабря 2018

Ключ leaguesGeneral можно добавить к каждому объекту в массиве, используя

o.leagues.map(({ leagueName }) => leagueName).join(' - ')

const data = [  
   {  
      matchId:307,
      matchStatusId:5,
      matchHomeScore:0,
      matchAwayScore:0,
      matchTime:0,
      homeClubId:608,
      homeClub:{  
         clubId:608,
         clubName:"Annaba"
      },
      awayClubId:609,
      awayClub:{  
         clubId:609,
         clubName:"Bazer Sakhra"
      },
      leagues:[  
         {  
            leagueId:65,
            parentLeagueId:null,
            leagueName:"ALGERIA"
         },
         {  
            leagueId:66,
            parentLeagueId:65,
            leagueName:"Algeria Cup"
         }
      ]
   },
];

const result = data.map(o => {
  if (o.leagues) {
    o.leaguesGeneral = o.leagues.map(({ leagueName }) => leagueName).join(' - ');
  }
  return o;
})

console.log(result)
...