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

 

[Lodash] 객체에서 특정 프로퍼티만 뽑아서 사용하기 (ft. pick)

pick lodash에서 제공하고 있는 pick() 메서드의 경우 객체에서 특정 프로퍼티만 사용하고자 할 때 사용된다. 일반적으로 어디서든 omit을 소개할때 같이 소개되는 메서드이기도 하며, omit과 마찬가지

mine-it-record.tistory.com

반응형