이번 포스팅은 객체로 구성된 배열을 그룹화하는 방법을 소개합니다.
샘플 데이터
다음은 이번 포스팅에서 예제로 사용될 샘플 데이터입니다.
const fruits = [
{ name: 'banana', date: '2021', price: 10000 },
{ name: 'banana', date: '2022', price: 20000 },
{ name: 'apple', date: '2021', price: 15000 },
{ name: 'apple', date: '2022', price: 25000 },
{ name: 'orange', date: '2020', price: 40000 },
{ name: 'grape', date: '2020', price: 25000 }
];
fruits라는 배열에는 과일의 가격을 연도별로 가지고 있습니다.
이 배열을 다음과 같이 과일별로 그룹화하거나
const groupByName = {
'banana': [
{ name: 'banana', date: '2021', price: 10000 },
{ name: 'banana', date: '2022', price: 20000 }
],
'apple': [
{ name: 'apple', date: '2021', price: 15000 },
{ name: 'apple', date: '2022', price: 25000 }
],
'orange': [
{ name: 'orange', date: '2020', price: 40000 }
],
'grape': [
{ name: 'grape', date: '2020', price: 25000 }
]
};
다음과 같이 연도별로 그룹화할 수 있습니다.
const groupByName = {
'2020': [
{ name: 'orange', date: '2020', price: 40000 },
{ name: 'grape', date: '2020', price: 25000 }
],
'2021': [
{ name: 'banana', date: '2021', price: 10000 },
{ name: 'apple', date: '2021', price: 15000 }
],
'2022': [
{ name: 'banana', date: '2022', price: 20000 },
{ name: 'apple', date: '2022', price: 25000 }
]
};
그룹화하는 방법은 아래에서 설명합니다.
array.reduce() 함수
JavaScript 배열에 내장되어 있는 reduce() 함수를 사용하여 배열의 요소를 그룹화할 수 있습니다.
다음 예제는 과일 이름별로 배열을 그룹화합니다.
const groupByName = fruits.reduce((acc, obj) => {
const {name} = obj;
// acc[name]이 있으면 acc[name]의 값을 할당 없으면, 빈 배열을 할당
acc[name] = acc[name] ?? [];
// acc[name]에 객체를 추가
acc[name].push(obj);
return acc;
}, {});
console.log(groupByName);
[실행 결과]
다음 예제는 연도별로 배열을 그룹화합니다.
const groupByName = fruits.reduce((acc, obj) => {
const {date} = obj;
acc[date] = acc[date] ?? [];
acc[date].push(obj);
return acc;
}, {});
console.log(groupByName);
[실행 결과]
JavaScript의 reduce() 함수는 배열의 각 요소를 순회하여 callback 함수가 return 하는 값을 누적하여 새로운 배열을 반환합니다.
반응형
'JavaScript > 배열' 카테고리의 다른 글
[JavaScript]배열 마지막 요소 제거하는 방법 (0) | 2022.09.17 |
---|---|
[JavaScript]배열에서 특정 값 제거하는 방법 (0) | 2022.09.17 |
[JavaScript]배열 첫 번째 요소 제거 (0) | 2022.03.24 |
[JavaScript]배열 복사 방법 (0) | 2022.01.19 |
[JavaScript]배열인지 확인하는 방법 (0) | 2022.01.03 |
댓글