Quel est le moyen le plus rapide de vérifier si un objet est vide ou non?
Y a-t-il un moyen plus rapide et meilleur que celui-ci:
function count_obj(obj){
var i = 0;
for(var key in obj){
++i;
}
return i;
}
Quel est le moyen le plus rapide de vérifier si un objet est vide ou non?
Y a-t-il un moyen plus rapide et meilleur que celui-ci:
function count_obj(obj){
var i = 0;
for(var key in obj){
++i;
}
return i;
}
Je suis en supposant que par le vide que tu veux dire "n'a pas de propriétés qui lui sont propres".
// Speed up calls to hasOwnProperty
var hasOwnProperty = Object.prototype.hasOwnProperty;
function isEmpty(obj) {
// null and undefined are "empty"
if (obj == null) return true;
// Assume if it has a length property with a non-zero value
// that that property is correct.
if (obj.length > 0) return false;
if (obj.length === 0) return true;
// Otherwise, does it have any properties of its own?
// Note that this doesn't handle
// toString and valueOf enumeration bugs in IE < 9
for (var key in obj) {
if (hasOwnProperty.call(obj, key)) return false;
}
return true;
}
Exemples:
isEmpty(""), // true
isEmpty([]), // true
isEmpty({}), // true
isEmpty({length: 0, custom_property: []}), // true
isEmpty("Hello"), // false
isEmpty([1,2,3]), // false
isEmpty({test: 1}), // false
isEmpty({length: 3, custom_property: [1,2,3]}) // false
Si vous avez seulement besoin de gérer ECMAScript5 navigateurs, vous pouvez utiliser Object.getOwnPropertyNames
, au lieu de l' hasOwnProperty
boucle:
if (Object.getOwnPropertyNames(obj).length > 0) return false;
Cela permettra d'assurer que, même si l'objet a seulement non énumérable propriétés isEmpty
sera encore de vous donner des résultats corrects.
Moyen efficace et multinavigateur est à l’aide de `` :
Plus : http://api.jquery.com/jQuery.isEmptyObject/
Vous devez cependant jquery.
IsEmpty() du trait de soulignement est pratique, si vous ne me dérange pas ajouter une bibliothèque supplémentaire.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.