const array = [
{
id: 1,
type: "사과",
dueDate: "20241215",
price: 11369,
},
{
id: 2,
type: "바나나",
dueDate: "20241215",
price: 19194,
},
{
id: 3,
type: "사과",
dueDate: "20241215",
price: 9010,
},
{
id: 4,
type: "사과",
dueDate: "20241208",
price: 19517,
},
{
id: 5,
type: "바나나",
dueDate: "20241208",
price: 18910,
},
{
id: 6,
type: "바나나",
dueDate: "20241208",
price: 3936,
},
{
id: 7,
type: "키위",
dueDate: "20240927",
price: 13938,
},
{
id: 8,
type: "키위",
dueDate: "20240927",
price: 4495,
},
{
id: 9,
type: "배",
dueDate: "20240927",
price: 16801,
},
{
id: 10,
type: "배",
dueDate: "20240927",
price: 12689,
},
];
const array2 = [
{
id: 11,
type: "사과",
dueDate: "20240927",
price: 20000,
},
{
id: 12,
type: "바나나",
dueDate: "20240927",
price: 34000,
},
{
id: 13,
type: "키위",
dueDate: "20240209",
price: 2090,
},
{
id: 14,
type: "배",
dueDate: "20240209",
price: 4900,
},
];
이런 array를 type을 이용해 묶고 싶다.
이런식으로
const groupBy = array.reduce((acc, item) => {
const { type, dueDate } = item;
acc[type] = acc[type] || [];
acc[type].push({ ...item });
return acc;
}, {});
array2도 추가로 합치고 싶을 때는?
const groupBy2 = array2.reduce((acc, item) => {
const { type, dueDate } = item;
acc[type] = acc[type] || [];
acc[type].push({ ...item });
return acc;
}, {});
const mergeObjects = (obj1, obj2) => {
const result = { ...obj1 };
Object.keys(obj2).forEach((key) => {
if (Array.isArray(obj2[key]) && Array.isArray(obj1[key])) {
result[key] = [...obj1[key], ...obj2[key]];
} else {
result[key] = obj2[key];
}
});
return result;
};
console.log(mergeObjects(groupBy, groupBy2));
groupBy 변수는 함수로 만들 수 있을 것 같다.
function groupBySomething(array, something) {
return array.reduce((acc, item) => {
const groupKey = item[something]; // key에 따라 그룹화 기준을 설정
acc[groupKey] = acc[groupKey] || [];
acc[groupKey].push({ ...item });
return acc;
}, {});
}
// 타입으로 그룹을 묶을 수 있고
console.log(
'groupBySomething(array, "type"): ',
groupBySomething(array, "type"),
);
// dueDate로 그룹을 묶을 수 있다
console.log(
'groupBySomething(array, "dueDate"): ',
groupBySomething(array, "dueDate"),
);
'Frontend > JavaScript & Jquery' 카테고리의 다른 글
[JS 문법] call, apply, bind 메소드로 this 명시적 바인딩하기 (0) | 2024.07.14 |
---|---|
[JS 문법] this 바인딩에 대해서 (1) | 2024.07.14 |
[JS 문법] JS 호이스팅에 대해서 (0) | 2024.07.14 |
[JS문법] null과 undefined (0) | 2024.07.13 |
[console Tip] console 유용하게 사용하기 (0) | 2024.07.10 |