반응형
💻 JavaScript에서 카테고리별 개수 정렬하기
네, JavaScript에서 객체를 생성한 후에 카테고리별 개수를 정렬할 수 있습니다. 객체 자체는 순서를 가지지 않지만, 객체의 키-값 쌍을 배열로 변환한 후 배열을 정렬하면 원하는 대로 데이터를 정리할 수 있죠.
아래는 카테고리별 개수를 구한 후, 그 결과를 카테고리 이름이나 개수에 따라 정렬하는 방법입니다.
🍎 1. 카테고리별 개수 구하기
먼저, 카테고리별로 개수를 집계해야 합니다. 다음은 예시 코드입니다:
const items = [
{ id: 1, category: 'fruit', name: 'apple' },
{ id: 2, category: 'vegetable', name: 'carrot' },
{ id: 3, category: 'fruit', name: 'banana' },
{ id: 4, category: 'fruit', name: 'orange' },
{ id: 5, category: 'vegetable', name: 'broccoli' },
{ id: 6, category: 'grain', name: 'rice' },
];
const categoryCounts = items.reduce((acc, item) => {
acc[item.category] = (acc[item.category] || 0) + 1;
return acc;
}, {});
console.log('Category Counts:', categoryCounts);
이 코드는 items
배열에서 카테고리별로 항목 개수를 계산합니다. reduce
메서드를 사용해 categoryCounts
객체를 만들었죠.
📊 2. 객체를 배열로 변환 후 정렬
객체는 기본적으로 순서를 가지지 않기 때문에 정렬하려면 먼저 Object.entries()
를 사용해 배열로 변환해야 합니다. 변환한 배열은 sort()
메서드를 사용해 정렬할 수 있습니다.
2.1 카테고리 이름 기준으로 정렬
카테고리 이름을 알파벳 순으로 정렬하려면 다음과 같이 하면 됩니다:
const sortedByCategory = Object.entries(categoryCounts).sort((a, b) => {
return a[0].localeCompare(b[0]);
});
console.log('Sorted by Category Name:', sortedByCategory);
2.2 개수 기준으로 정렬
카테고리별 항목 개수(내림차순)로 정렬하려면 이렇게 할 수 있습니다:
const sortedByCount = Object.entries(categoryCounts).sort((a, b) => {
return b[1] - a[1];
});
console.log('Sorted by Count:', sortedByCount);
🔄 3. 정렬 결과 출력
정렬 결과는 배열로 반환됩니다. 각 배열의 요소는 [category, count]
형태로 이루어져 있죠.
만약 정렬된 결과를 다시 객체 형태로 변환하고 싶다면, Object.fromEntries()
를 사용하면 됩니다:
const sortedCategoryCounts = Object.fromEntries(sortedByCount);
console.log('Sorted Category Counts Object:', sortedCategoryCounts);
📃 전체 코드 예제
전체 코드는 다음과 같이 구성됩니다:
const items = [
{ id: 1, category: 'fruit', name: 'apple' },
{ id: 2, category: 'vegetable', name: 'carrot' },
{ id: 3, category: 'fruit', name: 'banana' },
{ id: 4, category: 'fruit', name: 'orange' },
{ id: 5, category: 'vegetable', name: 'broccoli' },
{ id: 6, category: 'grain', name: 'rice' },
];
const categoryCounts = items.reduce((acc, item) => {
acc[item.category] = (acc[item.category] || 0) + 1;
return acc;
}, {});
const sortedByCategory = Object.entries(categoryCounts).sort((a, b) => {
return a[0].localeCompare(b[0]);
});
const sortedByCount = Object.entries(categoryCounts).sort((a, b) => {
return b[1] - a[1];
});
console.log('Sorted by Category Name:', sortedByCategory);
console.log('Sorted by Count:', sortedByCount);
// 정렬된 결과를 객체로 변환
const sortedCategoryCounts = Object.fromEntries(sortedByCount);
console.log('Sorted Category Counts Object:', sortedCategoryCounts);
✨ 요약
- 객체는 기본적으로 순서를 가지지 않기 때문에 정렬하려면
Object.entries()
를 사용해 배열로 변환해야 한다. - 배열로 변환한 후
sort()
메서드를 사용해 카테고리 이름이나 개수에 따라 정렬할 수 있다. - 정렬된 결과는 배열 형태로 사용하거나 다시 객체로 변환할 수 있다.
반응형
'Java Script' 카테고리의 다른 글
[JavaScript] JavaScript의 비동기 처리 이해하기 (0) | 2024.08.25 |
---|---|
[Java Script ]new Map() 형식 forEach 하기 (0) | 2023.03.30 |
[Java Script]map, filter, reduce 동작 원리 알아보기 (2) | 2023.03.29 |
[Java Script] textarea 글자 수 제한, 엔터키 입력 제한 (0) | 2022.01.06 |