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