2010-08-06 12 views
26

Duplicar posibles:
How do I test for an empty Javascript object from JSON?Javascript: Comprobación de si un objeto no tiene propiedades o si un mapa/asociativo-matriz está vacía

¿Hay una manera fácil de comprobar si un objeto no tiene propiedades, en Javascript? ¿O en otras palabras, una manera fácil de verificar si un mapa/conjunto asociativo está vacío? Por ejemplo, supongamos que tiene lo siguiente:

var nothingHere = {}; 
var somethingHere = {foo: "bar"}; 

¿Hay alguna manera fácil de decir cuál está "vacío"? La única cosa que puedo pensar es algo como esto:

function isEmpty(map) { 
    var empty = true; 

    for(var key in map) { 
     empty = false; 
     break; 
    } 

    return empty; 
} 

¿Hay una mejor manera (como una propiedad/función o algo nativo)?

+0

Dupe - http://stackoverflow.com/questions/5223/length-of-javascript-associative-array –

+0

@Daniel - gracias por el enlace a esa pregunta. Intenté buscar SO, pero no encontré nada. Mods - por favor cierra esta pregunta. ¡Gracias! –

+0

Me gustaría ir con la solución de chryss sobre la suya debido a la llamada hasOwnProperty. Si algo amplía el prototipo de objeto (algo que hacen muchas bibliotecas), su método ya no devolverá los resultados correctos, ya que leerá las propiedades heredadas. –

Respuesta

40

Prueba esto:

function isEmpty(map) { 
    for(var key in map) { 
     return !map.hasOwnProperty(key); 
    } 
    return true; 
} 

Su solución funciona, también, pero sólo si no hay ninguna biblioteca de extender el prototipo Object. Puede o no ser lo suficientemente bueno.

+0

La llamada 'hasOwnProperty' es muy vital aquí si alguna biblioteca está jugando con el prototipo' Object'. +1 –

+0

Gracias. Puse el comentario en la solución: había adoptado la llamada hasOwnPrototype por un tiempo y ya no pensaba en eso. – chryss

+1

nunca más pensando en ello y, de hecho, lo llamó hasOwnPrototype. lol – Zo72

Cuestiones relacionadas