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