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.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
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
Object.prototype.hasOwnProperty()
hasOwnProperty() 메소드는 객체가 특정 프로퍼티를 가지고 있는지를 나타내는 불리언을 반환합니다.
빈 객체에 hasOwnProperty()를 하게 된다면, undefined 가 출력 되어 if문을 통과하지 못합니다.
MDN: https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty
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글을 작성하게 되면 링크를 달 수 있도록...)
'javascript' 카테고리의 다른 글
[Javascript] Hash(해시) - 해시 테이블(hash table) 구현하기 (0) | 2022.07.04 |
---|---|
[Javascript] 배열 정렬하기 sort() (0) | 2022.06.27 |
[Javascript] 배열 ... 사용하기 ( 전개 구문 ) (0) | 2022.01.24 |
[Javascript] 문자열 숫자로 변환하기 ParseInt(ParseFloat) vs Number vs Number.parse (0) | 2022.01.17 |
[Javascript] 열거형 Enum (0) | 2022.01.14 |
댓글