2013-07-08 14 views
10

Voglio fare un'istruzione if per verificare se un oggetto è un oggetto vuoto o meno.Oggetto vuoto in Coffeescript

Per oggetto vuoto intendo se faccio console.log (oggetto) stampa {}.

Come posso fare?

+1

possibile duplicato di [? È oggetto vuoto] (http://stackoverflow.com/questions/4994201/is-object-empty) – Blender

risposta

17
myObject = {} 
if Object.keys(myObject).length == 0 
    # myObject is "empty" 
else 
    # myObject is not "empty" 
+1

Object .keys è ES5 e non funzionerà su IE <9 (Risolto usando ES5Shim) –

5

Questa funzione potrebbe funzionare per voi:

is_empty = (obj) -> 
    return true if not obj? or obj.length is 0 

    return false if obj.length? and obj.length > 0 

    for key of obj 
     return false if Object.prototype.hasOwnProperty.call(obj,key) 

    return true 

#Examples 
console.log is_empty("") #true 
console.log is_empty([]) #true 
console.log is_empty({}) #true 
console.log is_empty(length: 0, custom_property: []) #true 

console.log is_empty("Hello") #false 
console.log is_empty([1,2,3]) #false 
console.log is_empty({foo: 1}) #false 
console.log is_empty(length: 3, custom_property: [1,2,3]) #false 
+1

Attento che l'oggetto '{foo: undefined}' restituirà 'true', non' false' come ci si potrebbe aspettare. – Cimm

Problemi correlati