2010-11-20 30 views
0

JSON: Ben internette bir sürü arandı ama cevapların çoğu ben "Ad" bilir ve "yaş" Önceden, bu nedenle içindir jQuery bir nesne üzerinde yineleme (JSON)

{"Name":"bb", "age":"10"} 

j.Name, j.age gibi referans.

Sadece eşdeğer bir şey yapmak istiyorum, nesnenin içindeki anahtarları bilmiyoruz, tüm öğeler üzerinde yineleme yapmak ve hem ANAHTAR hem de DEĞER (daha önce ANAHTAYI bilmiyoruz) yazdırmak istiyoruz. her ifade için Firefox'ta bir sorun yoktur ama IE her döngü için destekleyemez bulunamadı ...

+0

gibi döngü göz neyi? – BoltClock

+2

FYI, "json" veya "ilişkilendirici bir dizi" değil "bir nesne". – ThiefMaster

+0

@TheifMaster teknik olarak, bu geçerli JSON :-) –

cevap

4

Bir for...in döngü kullanabilirsiniz, örneğin:

var obj = {"Name":"bb", "age":"10"}; 
for(var key in obj) { 
    if(obj.hasOwnProperty(key)) 
    alert("Key: " + key + "\nValue: " + obj[key]); 
} 

Veya jQuery $.each() eğer

var obj = {"Name":"bb", "age":"10"}; 
$.each(obj, function(key, value) { 
    alert("Key: " + key + "\nValue: " + value); 
}); 

You can test both versions here: böyle kapatılması, gerekir.

+0

Nesnesi JSON veya bir nesne hazırlayıcısından geliyorsa, gerçekten .hasOwnProperty gerekmiyor - birisi Object.prototype ile uğraşmadıkça [bir Bad Thing] (http://erik.eae.net/archives/2005/06) /06/22.13.54/) – ThiefMaster

+0

@ThiefMaster - Son *, * neden kod örneklerimi * tüm * vakalar için güvende tutmayı tercih ettim :) –

+0

@ThiefMaster - sadece merak ettim, bağlantıyı okudun mu? katma? * Çok * ilk satır "sonsuza kadar" Object.prototype "ile uğraşan insanların görmediği nadir değildir ..." –

1

jQuery olmadan jQuery bir for-in döngü

var person = {"Name":"bb", "age":"10"}; 

for(var attr in person) { 
    alert('Attribute: '+attr); 
    alert('Value: '+person[attr]); 
} 

... kullanırsınız:

var person = {"Name":"bb", "age":"10"}; 
$.each(person, function(attr, value) { 
    alert('Attribute: '+attr); 
    alert('Value: '+value); 
}); 
+1

Ayrıca, se 'hasOwnProperty' (genel olarak' '(... in ...)' için kullanılırken iyidir, bazı durumlarda ise Nesne prototipini dekore eder. –

1
var json = {"Name":"bb", "age":"10"} 
for (var i in json) { 
    console.log(json[i]); 
} 
+0

Sayısal olmayan bir döngü değişkeni için kullanmıyorum - bir nesne üzerinde bir for..in döngüsünde, bir anahtar içermiyorsa, sayısal bir dizin değil (anahtar sayısal olsa bile, ancak bu nokta değil). – ThiefMaster

+1

Ayrıca, bazı eğlenceli kişilerin Object prototipini dekore etmesi durumunda 'hasOwnProperty' işlevini kullanmanız gerekir (genelde for (... in ...)'). –

+0

@ThiefMaster, ben sizin noktanızı görürken, bir döngü içindeki dizinin açıkça okunmasını ve kodun daha okunabilir olmasını sağlıyorum. Kodlama stili bence, gerçekten de yanlış. – Razor

İlgili konular