어제 오늘 내일

[Javascript] 빈 객체 체크하는 3가지 방법 본문

IT/Javascript

[Javascript] 빈 객체 체크하는 3가지 방법

hi.anna 2020. 12. 26. 08:30

 

Javascript에서 빈 객체를 체크하는 방법입니다.

 

  1. Object.keys() 함수 
  2. 반복문 사용하기
  3. lodash library 사용하기

 

 

1. Object.keys() 함수

function isEmptyObj(obj)  {
  if(obj.constructor === Object
     && Object.keys(obj).length === 0)  {
    return true;
  }
  
  return false;
}

const obj1 = {};
const obj2 = {name: 'js'};
const str = "Javascript";

document.writeln(isEmptyObj(obj1)); // true
document.writeln(isEmptyObj(obj2)); // false
document.writeln(isEmptyObj(str));  // false

 

obj.constructor === Object

데이터가 객체인지 체크하기 위해서 constructor를 체크하였습니다.

 

Object.keys(obj).length === 0

Object.keys() 함수는 파라미터로 입력받은 객체의 key 목록을 배열로 리턴합니다.

따라서, 만약 Object.keys()를 호출한 결과 배열의 길이가 0이면 비어있는 객체입니다.

 

 

2. 반복문 사용하기

function isEmptyObj(obj)  {
  // 객체 타입체크
  if(obj.constructor !== Object)  {
    return false;
  }
  
  // property 체크
  for(let prop in obj)  {
    if(obj.hasOwnProperty(prop))  {
      return false;
    }
  }
  
  return true;
}

const obj1 = {};
const obj2 = {name: 'js'};
const str = "Javascript";

document.writeln(isEmptyObj(obj1)); // true
document.writeln(isEmptyObj(obj2)); // false
document.writeln(isEmptyObj(str));  // false

 

for..in 반복문을 활용하여 빈 객체를 체크할 수도 있습니다.

 

obj.constructor !== Object

앞의 예제와 마찬가지로 데이터 타입 체크를 위해 constructor를 이용하였습니다.

 

for(let prop in obj)

객체의 모든 속성(property)을 순회하기 위해서는 for...in 구문을 사용합니다.

 

obj.hasOwnProperty()

for...in 구문을 이용하면 프로토타입 체인을 따라서 상속되는 프로퍼티들까지 모두 순회합니다.

(위 예제에서는 상속되는 프로퍼티가 없긴 합니다.)

따라서, 그 속성(property)을 제외하고 체크하기 위해서 hasOwnPropery() 함수를 한번 더 활용해야 합니다.

 

 

3. lodash library 사용하기

function isEmptyObj(obj)  {

  if(obj.constructor === Object 
    && _.isEmpty(obj))  {
      return true;
  }
  return false;
}

const obj1 = {};
const obj2 = {name: 'js'};
const str = "Javascript";

document.writeln(isEmptyObj(obj1)); // true
document.writeln(isEmptyObj(obj2)); // false
document.writeln(isEmptyObj(str));  // false

 

lodash 라이브러리를 이용할 수도 있습니다.

(lodash 라이브러리를 이용하기 위해서는

lodash 라이브러리 다운로드 하거나, CND으로 참조할 수 있도록 해 주어야 합니다.

방법은 lodash.com 홈페이지를 참조하세요.)

 

_.isEmpty()

lodash의 isEmpty() 함수는

object, collection, map, set이 비어있는지를 체크해주는 함수입니다.

간단하게 이 lodash의 isEmpty() 함수를 사용할 수도 있습니다.

 


 

데이터의 타입이 객체인지, 그리고 그 객체가 비어있는지 확인하는 방법을 알아보았습니다.

 

 

반응형
Comments