2010-08-06 22 views
26

Olası Çoğalt:
How do I test for an empty Javascript object from JSON?JavaScript: Bir nesne özelliği yok ya olmadığını kontrol etme bir harita/ilişkisel dizi boşsa

bir nesne olmadığını kontrol etmenin kolay bir yolu var mı Javascript'te özellikleri yok mu? Başka bir deyişle, bir harita/ilişkisel dizi boş olup olmadığını kontrol etmenin kolay bir yolu? "Boş" hangisi anlatmak için kolay bir yol

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

var mı: Örneğin, aşağıdaki sen vardı diyelim?

function isEmpty(map) { 
    var empty = true; 

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

    return empty; 
} 

(bir yerli özellik/işlevi falan gibi) daha iyi bir yolu var mı: Aklıma gelen tek şey böyle bir şeydir?

+0

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

+0

@Daniel - bu sorunun bağlantısı için teşekkürler. SO aramayı denedim ama bir şey bulamadım. Modlar - lütfen bu soruyu kapatın. Teşekkürler! –

+0

hasOwnProperty çağrısı nedeniyle chryss çözümünüz üzerinden sizinkilere giderdim. Nesne prototipini (bir çok kitaplığın yaptığı bir şey) genişletirseniz, yönteminiz miras alınan özellikleri okuyacağından artık doğru sonuçları döndürmeyecektir. –

cevap

40

bu deneyin:

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

Çözümünüz de çalışır, ancak yalnızca Object prototipi uzanan hiçbir kütüphane yer almaktadır. Yeterince iyi olabilir ya da olmayabilir.

+0

"hasOwnProperty" çağrısı, herhangi bir kütüphanenin "Object" prototipi ile uğraşması halinde oldukça önemlidir. +1 –

+0

Teşekkürler. Çözümü çözüme koydum - bir süredir hasOwnPrototype çağrısını kabul etmiştim ve daha fazla düşünmüyordum bile. – chryss

+1

artık hiç düşünmüyorsun ve aslında buna hasOwnPrototype adını verdin. lol – Zo72