Como verificar se o objeto JavaScript está vazio

Com JavaScript, pode ser difícil verificar se um objeto está vazio. Com Arrays, você pode verificar facilmente com myArray.length , mas, por outro lado, os objetos não funcionam dessa maneira.

A melhor maneira de verificar se um objeto está vazio é usando uma função de utilidade como a abaixo.

function isEmpty(obj) {
for(var key in obj) {
if(obj.hasOwnProperty(key))
return false;
}
return true;
}

Portanto, se você tiver um objeto vazio, pode verificar se ele está vazio usando a função acima.

var myObj = {}; // Empty Object
if(isEmpty(myObj)) {
// Object is empty (Would return true in this example)
} else {
// Object is NOT empty
}

Como alternativa, você pode escrever a função isEmpty no protótipo do objeto.

Object.prototype.isEmpty = function() {
for(var key in this) {
if(this.hasOwnProperty(key))
return false;
}
return true;
}

Então você pode facilmente verificar se o objeto está vazio assim.

var myObj = {
myKey
: "Some Value"
}

if(myObj.isEmpty()) {
// Object is empty
} else {
// Object is NOT empty (would return false in this example)
}

Estender o protótipo do objeto não é a melhor coisa a fazer, pois pode causar alguns problemas de navegador e outros problemas com certas estruturas (também não é sempre confiável em certos ambientes). O exemplo que dei é bastante agnóstico em termos de framework.

Esta é uma daquelas funções utilitárias que sempre serão úteis, especialmente se você lida com muitos objetos diariamente (como eu).

Respostas relacionadas:

javascript foreach