group-and-sort
v1.0.0
Published
A utility to group and sort array or object data by one or more keys, supporting nested paths.
Downloads
7
Maintainers
Readme
group-and-sort
📦 A tiny utility to group and sort JSON data with support for nested keys and flexible output formats.
Install
npm install group-and-sort
Usage
const groupAndSort = require('group-and-sort');
const testData = [...]; // your array
// [1] vendor.name 기준 단일 키
const result1 = groupAndSort(testData, ['vendor.name'], ['price:desc'], 3);
console.log('[1] 제조사별 Top 3 가격순 (object)');
console.log(result1);
// [2] vendor.address.city 기준 중첩 단일 키
const result2 = groupAndSort(testData, ['vendor.address.city'], ['created_at:asc'], 2, false, 'map');
console.log('[2] 도시별 생성일 오름차순 Top 2 (map)');
console.log(result2);
// [3] 복합 키: 제조사 + 도시, 복합 정렬
const result3 = groupAndSort(testData, ['vendor.name', 'vendor.address.city'], ['price:desc', 'created_at:asc'], 2, false, 'array');
console.log('[3] 제조사+도시 그룹 + 복합 정렬 (array)');
console.log(result3);
// [4] 객체 정렬 조건 사용 + 최신순 정렬
const result4 = groupAndSort(
testData,
['vendor.name'],
[
{ key: 'created_at', order: 'desc' },
{ key: 'price', order: 'asc' },
],
2
);
console.log('[4] 제조사별 최신순 + 가격오름차순 정렬 (object)');
console.log(result4);
// [5] 누락 키 포함 테스트
const testMissing = [
{ id: 1, vendor: { name: 'Samsung' }, price: 80 },
{ id: 2, price: 70 },
{ id: 3, vendor: { name: 'LG' }, price: 85 },
];
const result5 = groupAndSort(testMissing, ['vendor.address.city'], ['price:desc'], 2, true);
console.log('[5] 누락된 중첩 키 포함 (object)');
console.log(result5);
// [6] 기본값 출력 포맷 (생략 시 object)
const result6 = groupAndSort(testData, ['vendor.name'], ['created_at:desc'], 2);
console.log('[6] 기본 출력 (object), 최신순');
console.log(result6);
// [7] 💥 [추가] price 객체 자체로 그룹핑 (JSON.stringify)
const result7 = groupAndSort(testData, ['price'], ['price:asc'], 2);
console.log('[7] price 객체 자체를 그룹 키로 사용 (object)');
console.log(result7);