web-dev-qa-db-fra.com

Comment faire correspondre un dictionnaire vide en Javascript?

Depuis le nœud REPL chose,

> d = {}
{}
> d === {}
false
> d == {}
false

Étant donné que j'ai un dictionnaire vide, comment puis-je m'assurer qu'il s'agit d'un dictionnaire vide?

51
function isEmpty(obj) {
  return Object.keys(obj).length === 0;
}
73
Raynos

Vous pouvez étendre Object.prototype avec cette méthode isEmpty pour vérifier si un objet n'a pas de propriétés propres:

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

Que diriez-vous d'utiliser jQuery?

$.isEmptyObject(d)
13
stroz

Puisqu'elle n'a aucun attribut, une boucle for n'aura rien à répéter. Pour donner du crédit là où c'est dû, j'ai trouvé cette suggestion ici .

function isEmpty(ob){
   for(var i in ob){ return false;}
  return true;
}

isEmpty({a:1}) // false
isEmpty({}) // true
10
David Ruttka

C'est ce que jQuery utilise, fonctionne très bien. Bien que cela nécessite le script jQuery pour utiliser isEmptyObject .

isEmptyObject: function( obj ) {
    for ( var name in obj ) {
        return false;
    }
    return true;
}

//Example
var temp = {};
$.isEmptyObject(temp); // returns True
temp ['a'] = 'some data';
$.isEmptyObject(temp); // returns False

Si l'inclusion de jQuery n'est pas une option, créez simplement une fonction javascript pur distincte.

function isEmptyObject( obj ) {
    for ( var name in obj ) {
        return false;
    }
    return true;
}

//Example
var temp = {};
isEmptyObject(temp); // returns True
temp ['b'] = 'some data';
isEmptyObject(temp); // returns False
9
cevaris

Je suis loin d'être un spécialiste de JavaScript, mais les éléments suivants fonctionnent-ils?

if (Object.getOwnPropertyNames(d).length == 0) {
   // object is empty
}

Il a l'avantage d'être un appel de fonction pur d'une ligne.

4
Steve Bennett
var SomeDictionary = {};
if(jQuery.isEmptyObject(SomeDictionary))
// Write some code for dictionary is empty condition
else
// Write some code for dictionary not empty condition

Cela fonctionne bien.

1
VAMSHI PAIDIMARRI

Il faudrait vérifier qu'il était de type 'objet' comme ceci:

(typeof(d) === 'object')

Et puis implémentez une fonction courte de 'taille' pour vérifier qu'elle est vide, comme mentionné ici .

1
chrisf

Si les performances ne sont pas prises en compte, il s'agit d'une méthode simple facile à retenir:

JSON.stringify(obj) === '{}'

De toute évidence, vous ne voulez pas, cependant, être en train de stringifier de gros objets dans une boucle.

1
Steve Bennett

Si vous essayez ceci sur Node.js, utilisez cet extrait, basé sur ce code ici

Object.defineProperty(Object.prototype, "isEmpty", {
    enumerable: false,
    value: function() {
            for (var prop in this) if (this.hasOwnProperty(prop)) return false;
            return true;
        }
    }
);
0
arbyter