JSON 데이터를 특정 기준으로 그룹화하려면 객체의 모든 키를 순회하면서 그룹화 기준이 되는 값을 추출한 뒤, push() 메서드를 사용해 동일한 값을 가진 데이터를 하나의 배열에 담으면 됩니다. 아래 예제는 name 속성을 기준으로 데이터를 묶는 과정을 보여줍니다.
예제 코드
var details = {
'1': {
name: 'John'
},
'2': {
name: 'John'
},
'3': {
name: 'David'
}
};
var objectWithGroupByName = {};
for (var key in details) {
var name = details[key].name;
if (!objectWithGroupByName[name]) {
objectWithGroupByName[name] = [];
}
objectWithGroupByName[name].push(details[key]);
}
console.log(objectWithGroupByName);코드 설명
- for...in 루프: details 객체의 각 키('1', '2', '3')를 하나씩 순회합니다.
- 그룹 키 생성: 해당 name 값을 가진 배열이 아직 없다면 빈 배열을 먼저 만듭니다.
- push()로 데이터 추가: 현재 객체를 해당 name의 배열에 추가해 같은 이름을 가진 데이터가 한곳에 모이도록 합니다.
실행 방법
위 프로그램을 실행하려면 다음 명령어를 입력하세요.
node fileName.js
실행 결과
여기서는 파일 이름이 demo122.js라고 가정합니다. 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
PS C:\Users\Amit\JavaScript-code> node demo122.js
{
John: [ { name: 'John' }, { name: 'John' } ],
David: [ { name: 'David' } ]
}결과를 보면 'John'이라는 이름을 가진 두 개의 객체가 하나의 배열로 묶였고, 'David'라는 이름을 가진 객체는 별도의 배열로 그룹화된 것을 확인할 수 있습니다. 이 방식은 응답 데이터를 카테고리별로 정리하거나 화면에 목록을 그룹 단위로 렌더링할 때 매우 유용하게 활용됩니다.