Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript 객체 배열을 배열 객체로 변환

<시간/>

개체 배열로 배열된 팀에 대한 다음 데이터가 있다고 가정해 보겠습니다. 우리의 임무는 이 데이터를 역할로 키를, 플레이어 이름 배열로 값을 갖는 개체로 변환하는 것입니다.

샘플 배열 -

const team = [{
   role: 'Batsman',
   player: 'V Kohli'
}, {
   role: 'Wicket Keeper',
   player: 'KL Rahul'
}, {
   role: 'Batsman',
   player: 'R Sharma'
}, {
   role: 'Wicket Keeper',
   player: 'R Pant'
}, {
   role: 'Bowler',
   player: 'B Kumar'
}, {
   role: 'Bowler',
   player: 'M Shami'
}, ]

배열을 인수로 받아 해당 객체를 반환하는 함수 objectify()를 정의해 보겠습니다.

이에 대한 코드는 -

const objectify = (team) => {
   const teamObject = {};
   team.forEach(member => {
      if(teamObject[member.role]){
         teamObject[member.role].push(member.player);
      }else{
         teamObject[member.role] = [member.player];
      }
   });
   return teamObject;
}
console.log(objectify(team));

여기에서 우리는 각 배열 항목을 하나씩 반복합니다. 그것이 teamObject에 있으면 플레이어를 값으로 밀어넣습니다. 그렇지 않으면 단일 플레이어가 있는 배열을 할당합니다.

전체 코드는 다음과 같습니다 -

예시

const team = [{
   role: 'Batsman',
   player: 'V Kohli'
}, {
   role: 'Wicket Keeper',
   player: 'KL Rahul'
}, {
   role: 'Batsman',
   player: 'R Sharma'
}, {
   role: 'Wicket Keeper',
   player: 'R Pant'
}, {
   role: 'Bowler',
   player: 'B Kumar'
}, {
   role: 'Bowler',
   player: 'M Shami'
}, ]
   const objectify = (team) => {
      const teamObject = {};
      team.forEach(member => {
         if(teamObject[member.role]){
            teamObject[member.role].push(member.player);
         }else{
            teamObject[member.role] = [member.player];
      }
   });
   return teamObject;
}
console.log(objectify(team));

출력

콘솔에서 이 코드의 출력은 -

입니다.
{
   Batsman: [ 'V Kohli', 'R Sharma' ],
   WicketKeeper: [ 'KL Rahul', 'R Pant' ],
   Bowler: [ 'B Kumar', 'M Shami' ]
}