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() 메서드 처럼 사용하는 방법에 대하여 알아보았습니다.