AJAX 요청 후 때때로 내 응용 프로그램이 다음과 같은 빈 객체를 반환 할 수 있습니다.
var a = {};
그런 경우인지 어떻게 확인할 수 있습니까?
답변
ECMA 5+ :
// because Object.keys(new Date()).length === 0;
// we have to do some additional check
Object.keys(obj).length === 0 && obj.constructor === Object
그러나 이로 인해 불필요한 배열 (반환 값 keys
) 이 생성 됩니다.
ECMA 5 이전 :
function isEmpty(obj) {
for(var prop in obj) {
if(obj.hasOwnProperty(prop)) {
return false;
}
}
return JSON.stringify(obj) === JSON.stringify({});
}
jQuery :
jQuery.isEmptyObject({}); // true
lodash :
_.isEmpty({}); // true
밑줄 :
_.isEmpty({}); // true
Hoek.deepEqual({}, {}); // true
Ext.Object.isEmpty({}); // true
angular.equals({}, {}); // true
R.isEmpty({}); // true
답변
이 작업을 수행하는 쉬운 방법은 없습니다. 속성을 명시 적으로 반복해야합니다.
function isEmpty(obj) {
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
return false;
}
return true;
}
경우 인 ECMAScript 5 지원이 가능하며, 당신이 사용할 수있는 Object.keys()
대신 :
function isEmpty(obj) {
return Object.keys(obj).length === 0;
}
답변
동일한 문제가 있지만 jQuery를 사용하는 사용자는 jQuery.isEmptyObject 를 사용할 수 있습니다 .
답변
이것이 내가 선호하는 솔루션입니다.
var obj = {};
return Object.keys(obj).length; //returns 0 if empty or an integer > 0 if non-empty
답변
Underscore.js 를 사용할 수 있습니다 .
_.isEmpty({}); // true
답변
if(Object.getOwnPropertyNames(obj).length === 0){
//is empty
}
http://bencollier.net/2011/04/javascript-is-an-object-empty/를 참조하십시오
답변
JSON.stringify를 사용하는 것은 어떻습니까? 거의 모든 최신 브라우저에서 사용할 수 있습니다.
function isEmptyObject(obj){
return JSON.stringify(obj) === '{}';
}