Library & Framework/Lodash
[Lodash] 배열에서 false인 요소들 제거하기 (ft. compact)
썸머워즈
2024. 1. 24. 22:07
반응형
compact
lodash에서 제공하고 있는 compact() 메서드의 경우 배열에서 false인 요소들을 제외할 때 사용되는 메서드이다.
_.compact([0, 1, false, 2, '', 3]);
// => [1, 2, 3]
이런 식으로 배열 요소 중 자바스크립트에서 false로 간주되는 것들을 제거한 배열을 반환해 준다.
근데 이렇게만 보면 굳이 사용할 필요가 있나? 싶기도 하다.
const array = [0, 1, false, 2, '', 3]
array.filter(v => v)
// => [1, 2, 3]
이렇게 filter만 사용해도 크게 복잡하지 않게 사용이 가능하기 때문이다.
실제로 나 같은 경우에는 특수한 경우가 아니면 filter 메서드를 사용하는 편이고,
api 응답 데이터를 가공할 때 분기에 따라 값이 필요하냐 아니냐가 갈리는 경우에 활용하였다.
const res = await fetch(url)
const result = [
...compact([
!!res.isActive && {
id: uuid,
name: 'active'
},
!!res.amount && {
id: uuid,
name: 'amount'
},
])
]
이런 식의 분기 처리로 true일 때만 값을 배열에 넣어줘야 하는 경우 같은 특수한 상황에서만 사용했고
그 외에는 filter를 사용했지 compact를 사용하지는 않은 거 같다.
위와 같은 특수 상황에서도 filter를 사용할 순 있었지만 아무래도 지저분해 보여서 compact를 사용하게 되었다.
그래도 나름 한 번쯤은 사용해 봤으니 이런 게 있구나 싶어 정리해 둔다.
만약 객체에서 value 가 false로 간주되는 것들을 제거하고 싶다면 아래 글을 참고하자.
https://mine-it-record.tistory.com/703
반응형