Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 객체의 null 및 falsy 값을 '-'로 바꾸는 방법

여러 개의 키를 가진 객체를 입력받아, 그 안에 있는 모든 거짓(falsy) 값들을 대시('-')로 교체하는 함수를 작성해 보겠습니다. 원본 객체를 순회하면서 거짓 값을 가진 키를 찾아내고, 추가적인 메모리를 소비하지 않는(in-place) 방식으로 해당 값을 '-'로 바꿔주면 됩니다.

falsy 값이란?

JavaScript에서 조건문이나 논리 부정 연산자(!)를 적용했을 때 false로 평가되는 값은 다음과 같습니다.

  • null
  • undefined
  • 빈 문자열 ''
  • 0, -0
  • NaN

따라서 이번 예제에서는 null뿐만 아니라 위에 나열된 모든 falsy 값들이 '-'로 교체됩니다.

예제

const obj = {
    key1: 'Hello',
    key2: 'World',
    key3: '',
    key4: 45,
    key5: 'can i use arrays',
    key6: null,
    key7: 'fast n furious',
    key8: undefined,
    key9: '',
    key10: NaN,
};
const swapValue = (obj) => {
    Object.keys(obj).forEach(key => {
        if(!obj[key]){
            obj[key] = '-';
        }
    });
};
swapValue(obj);
console.log(obj);

코드 설명

  • Object.keys(obj)를 사용해 객체의 모든 키를 배열로 가져옵니다.
  • forEach로 각 키를 순회하면서 !obj[key] 조건으로 falsy 여부를 검사합니다.
  • falsy 값인 경우 해당 키의 값을 '-'로 덮어씁니다. 새로운 객체를 생성하지 않으므로 추가 메모리가 필요 없습니다.

출력 결과

콘솔에 출력되는 결과는 다음과 같습니다.

{
    key1: 'Hello',
    key2: 'World',
    key3: '-',
    key4: 45,
    key5: 'can i use arrays',
    key6: '-',
    key7: 'fast n furious',
    key8: '-',
    key9: '-',
    key10: '-'
}

실행 결과를 보면 key3(빈 문자열), key6(null), key8(undefined), key9(빈 문자열), key10(NaN)처럼 falsy로 평가되는 값들이 모두 '-'로 교체된 것을 확인할 수 있습니다. 반면 45와 같은 참(truthy) 값은 그대로 유지됩니다.