HOME > lodash

[lodash] omitBy() 알아보기

마지막 수정일 : 2022-08-31 / 생성일 : 2022-08-31
134
View Count
얼마 전 lodash의 omit()에 대하여 알아보았습니다. 이번에는 이와 비슷하지만 조금 다르게 사용되는 omitBy()에 대하여 알아봅니다.




# lodash omitBy() 알아보기
omitBy() 역시 omit()처럼 객체의 프로퍼티나 메소드를 제외하는데 사용합니다. 다만 사용방법이 조금 다른데 omit()처럼 제외할 프로퍼티 이름을 명시하여 제외하는 방법이 아닌 함수를 사용하여 특정 조건을 명시할 수 있다는 차이점이 있습니다. 방법의 차이 뿐 두 메소드 모두 동일한 기능을 수행합니다.

omitBy()의 간단한 문법은 아래와 같습니다.

_.omitBy(targetObj, predicate)

각각의 옵션은 아래와 같이 사용됩니다.

targetObj <Object> // 제외할 대상이 되는 객체
predicate <Function> // 제외 조건이 들어갈 함수


여기서 predicate 함수의 조건으로 함수에서 true를 반환하는 경우 해당하는 값들이 모두 제외되겠죠.


! lodash omitBy() 예제보기
위에서 omitBy()가 무엇이고 문법을 간략하게 알아봤습니다. 다음은 이를 사용하는 간단한 예제 코드입니다.


@ 객체에서 undefined인 값들 모두 제거하기
만약 프로퍼티의 값이 undefined인 경우를 모두 제외하려면 아래와 같이 omitBy()를 사용하여 코드를 작성할 수 있습니다.

const test = {
  id: 1,
  name: 'webisfree',
  rank: undefined,
  follow: undefined
}

_.omitBy(test, value => value === undefined)

// Result
{
  id: 1,
  name: 'webisfree'
}

확인해보니 undefined 값을 가지고 있던 프로퍼티 rank, follow가 제거된 것을 확인 할 수 있습니다. 참고로 lodash의 isUndefined 메소드를 함께 사용하면 더 간단하겠습니다. 이제 위 코드를 _.isUndefined를 사용하여 동일하게 구현해봅니다.
_.omitBy(test, _.isUndefined)

// Result
{
  id: 1,
  name: 'webisfree'
}


@ 숫자인 값만 제외하기
이 번 예제는 비슷하지만 undefined가 아닌 숫자인 경우의 값만 제외할 경우입니다. 이 경우 아래와 같이 작성할 수 있겠습니다.
_.omitBy(test, _.isNumber)

// Result
{
  name: 'webisfree',
  rank: undefined,
  follow: undefined
}

출력 결과를 보면 숫자를 가진 id 값이 제외된 것을 확인할 수 있습니다.


[참고] 언제 사용할 수 있을까?
omit() 또는 omitBy()는 많이 사용되는 메소드입니다. 주로 api에서 값을 받아온 경우 불필요한 값을 제거하고 필요한 값만 남기기 위해서 사용됩니다. 이런 전처리 과정을 거치는 이유는 물론 제외하지 않아도 무방하겠지만 데이터를 변환 및 처리하는 과정에서 코드가 다소 복잡해질 수 있고 불필요한 연산을 수행할 수 있기 때문입니다. 이런 경우 유용하기 사용할 수 있겠죠.


여기까지 lodash의 메소드 omitBy()에 대하여 간략하게 알아보았습니다.

Author ByEnSSo