본문 바로가기
JavaScript

JavaScript - 객체에서 undefined 값만 골라 제거하기

by 새발개발JA 2022. 11. 4.
반응형

 

 

 

 

오늘은 객체의 값을 동적으로 넣어주고 있었다.

동적으로 넣다보니 값이 없을 때는 undefined 가 되었다.

api의 body 에 쓸때없는 property 를 보내주고 싶지 않아 여러 방법을 고민하다가

undifned 값인 properties 만 쏙쏙 골라 제거시키는 함수를 스택오버플로우에서 참고해서 정리해보았다

 

 

 


JavaScript - 객체에서 undefined 값을 제거하기

 

여기에 쓸때없는 값이 들어간 객체가 있다. 보기만 해도 지저분해서 참을수 없다.

객체 값이 undefined 인 것만 골라서 멀리 쫓아버리자

const obj = {
  a: undefined;
  b: undfined;
  c: '유일한 값',
  d: []
  e: {
    e1: undefined,
    e2: undfined,
  },
}

 

 

undefined 값을 가진 필드를 요렇게 싹 없애버리자

const obj = {
    	c: '유일한 값',
    	d: [],
        e: {},
}

 

 

여기서 핵심은 기존의 객체을 건들이는게 아닌, 

임시 객체를 만들고 그 안에 undefined 가 아닌 애들만 추가한뒤, 리턴해주는 방식을 사용하였다.

하지만 객체 안의 객체가 있을 수 있으므로, 그럴때는 재귀함수를 사용하여 해결하였다.

function removeUndefinedValue(obj) {
  const newObj = {}; // 빈객체를 만들어놓고

  Object.keys(obj).forEach(key => {
    // 키 값이 {오브젝트} 인 경우
    if (Object.keys(obj[key]).length) {
      newObj[key] = removeUndefinedValue(obj[key]); // newObj 안에서 또 재귀함수를 돌리자
    }
    
    // 키 값이 그외 값인 경우
    else if (obj[key]) {
      newObj[key] = obj[key]; // 조건을 통과하면 newObj에 똑같은 키와 값을 채워준다
    }
 });

  return newObj;
}

 

 

 

 

 

ref: https://stackoverflow.com/questions/25421233/javascript-removing-undefined-fields-from-an-object

 

 

 

 

 

반응형

댓글