์ด๋ค ๊ธฐ์ค์ ์ํ ๋ฐ์ดํฐ๋ค์ groupํด์ ๋ฐฐ์ด์ ๋ด๊ธฐ
var people = [
{ _id: 1, name: 'iroMan', actor: '๋ก๋ฒํธ ๋ค์ฐ๋ ์ฃผ๋์ด', alias: '์์ด์ด๋งจ', age: 21 },
{ _id: 2, name: 'Jane', actor:'toto', alias: 'dddd', age: 40 },
{ _id: 3, name: 'captainAmerica', actor:'ํฌ๋ฆฌ์ค ์๋ฐ์ค', alias: '์บกํด ์๋ฉ๋ฆฌ์นด', age: 40 },
{ _id: 4, name: 'captainAmerica', actor:'ํฌ๋ฆฌ์ค ์๋ฐ์ค', alias: '์บกํด ์๋ฉ๋ฆฌ์นด', age: 40 }
];
const groupBy = (objectArray, property) => {
return objectArray.reduce((acc, cur, idx) => {
var key = cur[property];
if(!acc[key]){ // ๋์ ๋๋ age๊ฐ ์์ผ๋ฉด
acc[key] = []; // ๋์ ๋๋ age๋ฅผ key๋ช
์ผ๋ก ๋น๋ฐฐ์ด์ ๋ง๋ค์ด์ค๋ค.
}
acc[key].push(cur);
return acc;
}, {}); // acc์ ์ด๊ธฐ ๊ฐ ๋น๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ค๋ค. 1)
};
var groupedId = groupBy(people, '_id');
console.log(groupedId)
var groupedAge = groupBy(people, 'age');
console.log(groupedAge)
๋ฐฐ์ด์ ๊ฐ ์์์ ์ํ๋ ํค๋ช
์ ๋ฃ๊ธฐ
// โ Bad Code
const groupBy = (objectArray) => {
return objectArray.reduce((acc, cur, idx) => {
acc['key_'+ (idx + 1)] = cur // ๋ฐฐ์ด์ ๊ฐ ์์์ ์ํ๋ ํค๋ช
์ ๋ฃ์ด์,
return acc; // acc๋์ ๋ ๊ฐ์ ๋ฆฌํดํฉ๋๋ค.
}, {}); // acc์ ์ด๊ธฐ ๊ฐ ๋น๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ค๋ค. 1)
};
var groupedAge = groupBy(people);
console.log(groupedAge);
// โ
Good Code
const result = people.reduce((acc, cur, idx) => {
return ({...acc, ['key_'+(idx+1)] : cur})
},{});
console.log(result);
์ด๋ ๊ฒ Spread Syntax ์ฌ์ฉํ๋ฉด ์ข์์ ์ ๋ง์ฝ acc ๊ฐ์ ๋ฎ์ด์์ฐ๊ณ ์ถ๋ค๋ฉด , ์ฝค๋ง ๋ค์๋ค๊ฐ ์ํ๋ ๊ฐ์ผ๋ก ์
๋ฐ์ดํธ๋ฅผ ํ ์ ์์ต๋๋ค.