2013-05-24 14 views
5

Bu benim jsonjquery kullanılarak json dizisinden değerler nasıl ayrılır.

{ 
    "data": [ 
    [ 
     "1", 
     "Skylar Melovia" 
    ], 
    [ 
     "4", 
     "Mathew Johnson" 
    ] 
    ] 
} 

this is my code jquery Code

for(i=0; i<= contacts.data.length; i++) { 
    $.each(contacts.data[i], function(index, objValue){ 
     alert("id "+objValue); 
    }); 
} 

benim objValue verileri var ama benim kod feryat olan en i id ve name bu görünüm benziyor dizisinde ayrı saklamak istediğiniz

var id=[]; 
var name = []; 
for(i=0; i<= contacts.data.length; i++){ 
    $.each(contacts.data[i], function(index, objValue) { 
     id.push(objValue[index]); // This will be the value "1" from above JSON 
     name.push(objValue[index]); // This will be the value "Skylar Melovia" from above JSON 
    }); 
} 

Bu nasıl yapabilirim.

+0

Onun istediğin gibi çalışıyor musun? Problemi daha iyi tanımlayın. –

cevap

3
$.each(contacts.data, function(index, objValue) 
{ 
    id.push(objValue[0]); // This will be the value "1" from above JSON 
    name.push(objValue[1]); // This will be the value "Skylar Melovia" from above JSON 

}); 

Düzen, alternatif kullanım:

$.each(contacts.data, function() 
{ 
    id.push(this[0]); // This will be the value "1" from above JSON 
    name.push(this[1]); // This will be the value "Skylar Melovia" from above JSON 
}); 

$ .each contacts.data üzerinde yineleme olacaktır:

[ 
    //index 1 
    [ 
     "1", 
     "Skylar Melovia" 
    ], 
    //index=2 
    [ 
     "4", 
     "Mathew Johnson" 
    ] 

] 

imza fonksiyonu (indeksi vermek anomnymous fonksiyonu, Objvalue), index ile her bir öğeye uygulanacak, bu kişi, contact.data dizisinde bulunan index ve objValue değeridir. indeksi = 1 için size sahip olacaktır:

objValue=[ 
      "1", 
      "Skylar Melovia" 
     ] 

Sonra objValue erişebilirsiniz [0] ve objValue [1]. (Dutchie432 yorumun ve cevap cevaben;)

DÜZENLEME): jQuery olmadan bunu yapmak için hızlı yolu, $ .each yazmak ve okumak için daha güzel ama burada JS düz eski kullanın:

for(i=0; i<contacts.data.length; i++){ 
    ids.push(contacts.data[i][0]; 
    name.push(contacts.data[i][1]; 
} 
+0

Eh, orada var. Aynı noktayı oluşturan 3 farklı cevap. Bu benim için belki de en iyi cevap, çünkü benim tembellik için sonsuzca “.length” kullanıyor. Seninki daha kaygan. – Dutchie432

+0

kaygan ama jQuery özellikle ihtiyacınız yoksa, her zaman döngü için kullanmalısınız ama sanırım OP, $ .each çalışmasının nasıl çalıştığını görüyor – TecHunter

+0

Çözüm için teşekkürler ve tüm bunları açıklıyor. güzel çalışıyor .. – addy

1

Belki de tam olarak anlayamıyorum, ancak veri öğeleri arasında dolaşıyorsunuz ve sonra da içerilen değerler arasında geçiş yapıyorsunuz. İstediğin şeyin sadece veri öğeleri arasında dolaşıp sırasıyla 0 ve 1 değerlerini alması olduğunu düşünüyorum.

Ayrıca, dış for döngü çıkarın less than or equal to (<=)

for(i=0; i<contacts.data.length; i++){ 
    ids.push(contacts.data[i][0]; 
    name.push(contacts.data[i][1]; 
} 
0

aksine size döngüde less than (<) operatörü istiyorum inanıyoruz. $.each zaten data dizisinin üzerinde yineleniyor. data[i] bir dizi değil, bu nedenle $.each bunu yineleyemez.

http://jsfiddle.net/ExplosionPIlls/4p5yh/

Ayrıca ancak ikisini yerine $.each ait for döngü kullanabilirsiniz.