2013-05-24 15 views
5

To mój jsonJak oddzielić wartości z tablicy json za pomocą jquery.?

{ 
    "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); 
    }); 
} 

mam dane w moim objValue ale chcę osobno przechowywać w tablicy id i name wygląda to tak spojrzeć na mój kod jest poniżej

Jak mogę to zrobić.

+0

Its działa tak, jak chcesz, prawda? Zdefiniuj problem lepiej. –

Odpowiedz

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 

}); 

Edit, alternatywne wykorzystanie:

$.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 będzie iteracyjne nad contacts.data który jest:

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

] 

anomnymous funkcja dajesz z funkcją podpis (indeksowe, Objvalue) zostanie zastosowany dla każdego elementu z indeksem w tablicy contact.data i jego wartością objValue. Dla indeksu = 1 będziesz mieć:

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

Następnie możesz uzyskać dostęp do objValue [0] i objValue [1].

EDIT (w odpowiedzi na Dutchie432 komentarza i odpowiedzi;)): szybszy sposób to zrobić bez jQuery, $ .each jest ładniejszy pisać i czytać, ale tutaj użyć zwykły stary JS:

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

Cóż, masz to. 3 różne odpowiedzi, wszystkie robiące ten sam punkt. Jest to prawdopodobnie najlepsza odpowiedź, ponieważ moja leniwie używa '.length' w pętli for. Twoja jest bardziej zręczna. – Dutchie432

+0

Zręczny, ale gdy nie potrzebujesz szczególnie jQuery powinieneś użyć pętli, ale myślę, że OP musi zobaczyć, jak działa $ .each – TecHunter

+0

Dzięki za rozwiązanie i wyjaśnienie tego wszystkiego. działa dobrze ... – addy

1

Być może nie rozumiem w pełni, ale myślę, że przechodzisz przez elementy danych, a następnie zapętlasz również zawarte w nich wartości. Myślę, że to, czego chcesz, to po prostu przeglądanie elementów danych i pobieranie wartości odpowiednio 0 i 1.

Również wierzę chcesz operatora w swojej pętli less than (<) w przeciwieństwie do 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

Zdjąć zewnętrzną for pętlę. $.each już iteruje nad tablicą data. data[i] nie jest tablicą, więc $.each nie może iterować nad nią.

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

Można również użyć pętli for zamiast $.each, ale nie jednocześnie.

Powiązane problemy