Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- custom printing
- silent printing
- Git
- 이미지 데이터 타입
- adb pair
- Recoil
- device in use
- Failed to compiled
- vercel git lfs
- 티스토리 성능
- augmentedDevice
- camera permission
- nextjs
- react-native
- Each child in a list should have a unique "key" prop.
- ELECTRON
- rolldown
- animation
- dvh
- adb connect
- npm package
- electron-packager
- github lfs
- react-native-dotenv
- camera access
- github pdf
- Can't resolve
- html
- ffi-napi
- github 100mb
Archives
- Today
- Total
Bleeding edge
fetch로 카테고리별로 분류하기 본문
react강의를 들으면서, fecth로 얻은 json파일을 카테고리별로 저장하는 방법을 배웠었다. 문제를 간단하기위해, 받는 테스트케이스를 아래와 같이 작성하기로 하였다.
const list = [
{ id: "1", name: "one", category: "a" },
{ id: "2", name: "twp", category: "b" },
{ id: "3", name: "three", category: "a" },
];
위의 케이스의 경우에 케이스가 a, b 두가지가 존재한다 만일 분류를 한다면,
{
a: [
{ id: '1', name: 'one', category: 'a' },
{ id: '3', name: 'three', category: 'a' }
],
b: [ { id: '2', name: 'twp', category: 'b' } ]
}
다음과 같이 분류가 되어야한다. 강의 내에서는
list.reduce((acc, cur) => {
if (acc.hasOwnProperty(cur.category)) {
return { ...acc, [cur.category]: [...acc[cur.category], cur] };
} else {
return { ...acc, [cur.category]: [cur] };
}
}, {})
다음과 같이 사용하였다.
reduce의 default value를 {}로 하고, 저장된 key값이 없으면 [cur], 저장된 key값이 있으면 [...acc[cur.category], cur] 저장된 acc에서 cur.category키 값을 호출하여 값을 추가한다.
if문부터 else까지 4줄이 추가되는 것을 보며 좀 더 심플하게 쓸 수 있지않을까 고민을 하다가
list.reduce(
(acc, cur) =>
acc.hasOwnProperty(cur.category)
? { ...acc, [cur.category]: [...acc[cur.category], cur] }
: { ...acc, [cur.category]: [cur] }, {}
)
3항 연산자로 조금 더 깔끔하게 써봤다. 하지만 아무래도, if else정도만 생략된 정도니 더 줄일 수 있을지 않을까.. 하고 검색해봤는데, rest 파라미터(...)에서 문제가 많이 생겼다 그래서 괄호를 적절하게 사용하였다.
list.reduce((acc, cur) => {
return {
...acc,[cur.category]: [...(acc[cur.category] ? acc[cur.category] : []), cur],
};
}, {})
마찬가지로 삼항연산자를 사용하였지만, 조건부로 rest 파라미터를 사용하여 한줄로 매우 깔끔해졌다.
'Javascript' 카테고리의 다른 글
Queue를 class로 구현해보자. (0) | 2022.10.30 |
---|---|
클린코드 작성하기 (0) | 2022.07.10 |
Map의 저장방법 두가지 (0) | 2022.06.27 |
map.get(key) 대신, map.get(value) 만들기 (0) | 2022.06.10 |
TypeError: xxxxxxxxxxx is not iterable (0) | 2022.05.20 |