웹개발 및 최신 테크 소식을 전하는 블로그, 웹이즈프리

HOME > lodash

[lodash] 객체에서 undefined, null 값의 프로퍼티 제거하는 방법은? 배열의 compact()

Last Modified : 2023-02-24 / Created : 2023-02-24
3,438
View Count
Lodash의 배열에는 compact() 메서드가 존재합니다. 이 메서드는 배열에 사용하는 메소드로 값에 존재하는 null, undefined 등의 falsy 값을 깨끗하게 제거해줍니다. 즉 사용하지 않아도 될 값을 제외해주는데요 ~ 객체에서는 어떻게 하면 될까요? 비슷한 메서드가 있을까요? 아래에서 알아봅니다.



# 객체에서 undefined, null 등을 가진 프로퍼티 제거 방법


Lodash에서도 비슷한 기능을 구현하는 객체 메서드가 존재합니다. 바로 pickBy()입니다. 잠깐! pickBy() 메소드는 특정 값만 프로퍼티로 사용하는 메소드인데요 ~ 이 때 인자로 함수를 사용하지 않으면 compact() 메서드처럼 falsy 값을 가지는 프로퍼티를 삭제해주는 기능도 가지고 있습니다.

그럼 간단한 예제를 하나 만들고 알아봅니다. 아래의 객체 값 notCompact 객체는 null, undefined 등의 값을 가지고 있습니다. 이제 이 값에 pickBy()를 사용해보도록 하겠습니다. 먼저 lodash를 import합니다.
const _ = require('lodash')

const notCompact = {
  name: 'webisfree',
  nickname: '',
  rank: null,
  score: 100,
  age: undefined,
}

이제 객체에 pickBy() 메서드를 사용하고 결과를 확인합니다.
const compact = _.pickBy(notCompact)

console.log(compactObject)

// Result
{
  name: "webisfree"
  score: 100
}

위 예제를 보면 빈 문자열,  null, undefined의 값을 가지는 프로퍼티는 모두 제거된 것을 확인할 수 있습니다. 즉 객체의 compact() 메서드 처럼 동작한 것을 알 수 있죠. 이 방법을 사용하면 매우 쉽게 프로퍼티를 제거할 수 있게됩니다. 숫자를 사용한 예제도 해보겠습니다.
const notCompact = {
  score: 100,
  average: 50,
  since: 0,
}

const compact = _.pickBy(notCompact)

이 번에도 결과를 확인해봅니다.
console.log(compactObject)

// Result
{
  score: 100,
  average: 50
}


숫자를 사용해보니 역시 원하는 결과가 나왔습니다 .즉 0인 값을 가지는 프로퍼티는 제외되어 나타나게 됩니다.


여기까지 객체에 pickBy() 메소드를 사용하여 falsy 프로퍼티를 제거하는... 배열의 compact() 메서드 처럼 사용하는 방법에 대하여 알아보았습니다.
아래의 글도 찾고 계시지 않나요?

Previous

lodash 컬렉션에서 일치하는 문자 여부 찾기

Previous

lodsah trim() 함수 사용 방법 및 예제