얼마 전 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()에 대하여 간략하게 알아보았습니다.