javascript

[Javascript] 빈 객체 체크하는 방법

sewonzzang123 2022. 1. 28.
반응형

 

 

Javascript 에서 빈 객체를 체크하는 방법들을 소개하겠습니다.


1. Object.keys() 함수

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

let obj1 = {};

if(isEmptyObject(obj1)===true) console.log('empty object');

Object.prototype.constructor 

 

인스턴스의 프로토타입을 만든 Object 함수의 참조를 반환합니다. 이 속성값은 함수 자체의 참조입니다.

함수 이름을 포함하는 문자열이 아니라 그 값은 1, true, 'test'와 같은 원시값에 대해서만 읽기 전용입니다.

 

모든 객체는 자신의 prototype으로부터 constructor 속성을 상속합니다.

 

MDN: https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor

 

Object.prototype.constructor - JavaScript | MDN

인스턴스의 프로토타입을 만든 Object 함수의 참조를 반환합니다. 이 속성값은 함수 자체의 참조임을 주의하세요, 함수 이름을 포함하는 문자열이 아니라. 그 값은 1, true 및 "test"와 같은 원시(primi

developer.mozilla.org

 

Object.keys()

 

Object.keys() 메소드는 주어진 객체의 속성 이름들을 일반적인 반복문과 동일한 순서로 순회되는 열거할 수 있는 배열로 반환합니다.

 

Object.keys(obj)

 

obj : 열거 할 수 있는 속성 이름들을 반환 받을 객체

return : 전달된 객체의 열거할 수 있는 모든 속성 이름들을 나타내는 문자열 배열

let obj = {};

console.log(Object.keys(obj)); // []

let obj2 = {1:'a'};

console.log(Object.keys(obj2); // ['1']

 

MDN: https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

 

Object.keys() - JavaScript | MDN

Object.keys() 메소드는 주어진 객체의 속성 이름들을 일반적인 반복문과 동일한 순서로 순회되는 열거할 수 있는 배열로 반환합니다.

developer.mozilla.org

 

 

2. 반복문 사용하기

function isEmptyObj(obj){
	if(obj.constructor !== Object) return false;
    
    for(let prop in obj){
    	if(obj.hasOwnProperty(prop)){
        	return false;
        }
    }
	return true;
}

let obj = {};
let obj2 = {name:'sewon'};

console.log(isEmptyObj(obj));  // true
console.log(isEmptyObj(obj2)); // false

 

for...in

 

for...in 문은 상속된 열거 가능한 속성들을 포함하여 객체에서 문자열로 키가 지정된 모든 열거 가능한 속성에 대해 반복합니다.

for (variable in object){ ... }

variable : 매번 반복마다 다른 속성이름이 변수로 지정됩니다.

object : 반복작업을 수행할 객체로 열거형 속성을 가지고 있는 객체 

 

 

MDN: https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/for...in

 

for...in - JavaScript | MDN

for...in문은 상속된 열거 가능한 속성들을 포함하여 객체에서 문자열로 키가 지정된 모든 열거 가능한 속성에 대해 반복합니다. (Symbol로 키가 지정된 속성은 무시합니다.)

developer.mozilla.org

 

Object.prototype.hasOwnProperty()

 

hasOwnProperty() 메소드는 객체가 특정 프로퍼티를 가지고 있는지를 나타내는 불리언을 반환합니다.

빈 객체에 hasOwnProperty()를 하게 된다면, undefined 가 출력 되어 if문을 통과하지 못합니다.

 

MDN: https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty

 

Object.prototype.hasOwnProperty() - JavaScript | MDN

hasOwnProperty() 메소드는 객체가 특정 프로퍼티를 가지고 있는지를  나타내는 불리언 값을 반환한다.

developer.mozilla.org

 

3. lodash library 사용하기

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

const obj = {};
console.log(isEmptyObject(obj)); //false

 

lodash library의 _.isEmpty()

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

 

lodash는 보통 array, collection, date 등 데이터의 필수적인 구조를 쉽게 다룰 수 있게끔 하는데에 사용하는 라이브러리 입니다.

(lodash글을 작성하게 되면 링크를 달 수 있도록...)

 

 

 

반응형

댓글