HOME > lodash

lodash omit() 메소드 알아보기

마지막 수정일 : 2022-07-29 / 생성일 : 2022-05-30
900
View Count
안녕하세요 ~ 오늘은 lodash의 다양한 메소드(함수) 중에서 omit()에 대하여 간략하게 알아봅니다.



# lodash 메소드 omit() 알아보기
먼저 lodash의 omit()은 어떤 기능을 가지고 있을까요? 간단하게 설명하면 아래와 같습니다.

"객체의 프로퍼티나 메소드를 제외한다"


객체에서 특정 프로퍼티나 메소드를 제외하기 위한 방법으로 사용할 수 있습니다. omit의 사전적 의미가 빼내는 것이므로 동일하게 동작한다고 생각할 수 있습니다.

그렇다면 언제 사용하면 좋을까요? 쉽게 예를 들자면... api를 호출하여 서버에서 얻은 응답에서 특정 값만 사용하기 위한 경우에도 사용할 수 있겠습니다. 만약 서버의 응답(response)이 아래와 같이 no, url 등등 여러 값을 가진 경우를 생각해봅니다.
const response = {
  no: 1,
  url: 'webisfree.com',
  ...
}

이제 위 값을 변수 siteA에 저장하려고 합니다. 이때 no는 제외하고 url외 나머지를 저장하기 위한 방법으로 omit()을 사용할 수 있습니다. 먼저 omit()을 사용하는 문법을 아래와 같습니다.

_omit(Object, [Property or Method])


여기서 두 번째 인자는 제외할 프로퍼티( 또는 메소드)를 의미합니다. lodash의 .pick()이 객체에서 특정 값만 얻기 위한 방법으로 사용되는데 omit()은 그 반대로 특정 프로퍼티를 제외하기 위해서 사용할 수 있습니다.

그럼 아래와 같이 omit()을 적용하여 원하는 결과를 얻어보도록 해보겠습니다.
const siteA = _.omit(response, 'no')
console.log(siteA)

// Result
{
  url: 'webisfree.com',
  ...
}

결과를 확인해보면 response 객체에서 url이 제외된 것을 알 수 있습니다. 이처럼 객체가 여러 값을 가지는 경우에 쉽게 일부 프로퍼티 등만 제외할 수 있어 매우 편리할 것입니다.

@ omit()의 특징 및 장점
omit()에 대하여 조금 더 알아보면 좋을 것 같습니다. 그래서 omit()의 장점 및 특징을 나열해보겠습니다.

- 객체의 프로퍼티가 많은 경우 일부만 제외하기 쉬움
- 얇은 복사(shallow copy) 방식이 사용
- 빈 값을 넘길 경우 얇은 복사만 일어남


여기까지 장점 및 특징입니다. 첫 번째... 일부만 제외할 수 있다는 특히 프로퍼티가 매우 많을 때 매우 편리할 것입니다. 만약 omit()을 사용하지 않는다면? delete 등을 사용해서 지울 수는 있겠지만 매우 번거로울 것입니다. 쉽게 a, b, c 세 개를 지운다고 하여도 비교해보면 명확합니다.
// omit() 사용
_.omit(response, [ 'a', 'b', 'c' ])

// delete 사용
delete response a
delete response b
delete response c

훨씬 간단하고 쉽게 들어옵니다. 참고로 위에서는 두 번째 인자로 배열로 여러 값을 넘겼지만 하나만 삭제 할 경우 String으로 넘길 수도 있습니다.

Example) Remove one property only !!
_.omit(response, 'a')

다음 장점은 얇은 복사가 사용된다는 점입니다. 즉 변수에 omit()을 사용할 경우 객체 값이 변이(mutating)되는 것을 예방하기 위한 추가적인 코드가 필요 없습니다. 물론 Deep clone 방식이 아니므로 이 경우 _.cloneDeep() 등의 방법을 사용할 필요는 있습니다.


여기까지 lodash의 pick()과 반대되는 omit()에 대하여 알아보았습니다.

Author ByEnSSo