jQuery

2010-05-18 7 views
9

ile json dizi nasıl değiştirileceğini benim kodjQuery

var groups = [ 
{ "gid": 28, "name": "Group 1", "ishidden": false, "isprivate": false }, 
{ "gid": 16, "name": "Group 2", "ishidden": true, "isprivate": false }, 
{ "gid": 31, "name": "Group 3", "ishidden": true, "isprivate": false }, 
{ "gid": 11, "name": "Group 4", "ishidden": false, "isprivate": false }, 
{ "gid": 23, "name": "Group 5", "ishidden": false, "isprivate": false } 
]; 

jQuery kullanarak hiçbir problm ile bu erişebilir ya yineleme yapabilirsiniz nesnelerin aşağıdaki json dizi var. Ancak, öğelerden birinin değerini değiştirmem gereken bir durum ortaya çıktı (ör.özelliğini gid: 28 için true olarak değiştirin) ve sonra diğer jQuery işlevini buna karşı çalıştırın. Mümkün mü? ya da tüm nesneyi yeniden inşa etmek zorunda mıyım? Mümkünse bunu nasıl başarabilirim?

herhangi bir yardım için teşekkür ederiz!

for (var i = 0; i < groups.length; i++){ 
if (groups[i].gid == 28){ 
    groups[i].ishidden = true; 
    break; 
} 
} 

cevap

3

Ben ancak, bu ince modifikasyonu

var lim = groups.length; 
for (var i = 0; i < lim; i++){ 
if (groups[i].gid == 28){ 
    groups[i].ishidden = true; 
    break; 
} 
} 
+0

Aslında tüm cevapları test ettim ve hepsi işe yaradı. Bu soruyu ilk cevap olarak seçtim. Aksi takdirde tüm cevaplar mükemmel çalışır. –

8

bu deneyin Bu uzun vadede biraz zaman kurtaracak

var index = {}; 
$(groups).each(function() { index[this.gid] = this; }); 

// and then 
index["28"].ishidden = true; 

.

12

jQuery tarzı olacaktır:

$(groups).each(function() { 
    if (this.gid == 28) this.ishidden = true; 
}); 

Ama alternatif bir dizin oluşturabilirsiniz:

+0

+1 eklemek istiyorum, Justin cevap daha iyi olduğunu söyleyebilirim. JQuery gibi, sözdizimi ile bu kadar basit nasıl olabilirsiniz? :) – Alec

+1

Yerli javascript'ten daha yavaş olduğu için mümkün olan yerlerde (özellikle büyük bilgiler için) $. ama ikinci alternatifiniz, buna benzer bir örneğe rastlamadığım bir şekilde oldukça ilginç. Bu konuda daha fazla bilgi edinmek istiyorum. Bunun hakkında biraz bilgi verebilir misiniz? veya kaynak sağlayabilir misiniz? Cevabınız için çok teşekkür ederim! –

+1

@Emin: İlgili: '$ .each()' alternatiften daha yavaş (yani: bir yerel döngü): Evet, bu doğru. Karşılaştırma açısından çok önemli olacak mı? Muhtemelen hayır, ama kendiniz için karşılaştırma yapmalısınız. Modern JS motorları son derece hızlıdır ve döngü yapmak için binlerce kayıtlarınız olmadıkça, herhangi bir farkı fark etmeyeceksiniz. Alternatif çözüm ile ilgili: Açıklamaktan mutluluk duyuyorum. Tam olarak ne anlamıyorsun? – Tomalak