Próbuję przejść przez następującą tablicę json:
{
"id": "1",
"msg": "hi",
"tid": "2013-05-05 23:35",
"fromWho": "[email protected]"
}, {
"id": "2",
"msg": "there",
"tid": "2013-05-05 23:45",
"fromWho": "[email protected]"
}
I wypróbowałem następujące rozwiązania
for (var key in data) {
if (data.hasOwnProperty(key)) {
console.log(data[key].id);
}
}
Ale z jakiegoś powodu otrzymuję tylko pierwszą część, wartości id 1.
Jakieś pomysły?
javascript
json
Alosyius
źródło
źródło
Odpowiedzi:
Twój JSON powinien wyglądać tak:
Możesz wykonać pętlę po tablicy w następujący sposób:
Lub w ten sposób (sugerowane przez Erica) bądź ostrożny z obsługą IE
źródło
json.forEach(function(obj) { console.log(obj.id); });
W Twoim kodzie jest kilka problemów, najpierw Twój json musi wyglądać następująco:
Następnie możesz iterować w ten sposób:
I daje doskonały efekt.
Zobacz skrzypce tutaj: http://jsfiddle.net/zrSmp/
źródło
forEach dla łatwej implementacji.
źródło
Spróbuj tego
źródło
Ponieważ już zacząłem się tym zajmować:
I ta funkcja
Możesz to tak nazwać
Aktualizacja po komentarzu Ericsa
Jak Eric wskazał pętla macierzy może nieoczekiwane rezultaty . Przywoływane pytanie zawiera długą dyskusję na temat zalet i wad.
for in
Test z for (var i ...
Ale wygląda na to, że następująca sytuacja jest całkiem bezpieczna:
Chociaż test w chromie dał następujący wynik
Testuj z
.forEach()
Przynajmniej w Chrome 30 działa to zgodnie z oczekiwaniami
Spinki do mankietów
for in
na mdnfor in
mniej złymźródło
for ... in
pętle nie powinny być używane dla tablicfor each
.for ... in ...
jest konstrukcją językową służącą do wyliczania kluczy obiektów w dowolnej kolejności. To nie jest właściwa konstrukcja dla tablicy.To działa. Właśnie dodałem nawiasy kwadratowe do danych JSON. Dane to:
A pętla to:
źródło
Musi to być tablica, jeśli chcesz ją iterować. Najprawdopodobniej brakuje ci
[
i]
.Sprawdź to jsfiddle: http://jsfiddle.net/lpiepiora/kN7yZ/
źródło
Trochę późno, ale mam nadzieję, że pomogę innym: D
twój json musi wyglądać jak coś, co już powiedział Niklas. A potem zaczynasz:
jeśli masz tablicę wielowymiarową, to jest twój kod:
źródło
Widzę tylko, że masz dwa obiekty JSON oddzielone przecinkami. Gdyby obydwa znajdowały się wewnątrz tablicy (
[...]
), miałoby to większy sens.A jeśli SĄ one wewnątrz tablicy, używałbyś po prostu standardowej pętli typu „for var i = 0 ...”. W tej chwili wydaje mi się, że spróbuje pobrać właściwość „id” ciągu „1”, a następnie „id” z „hi” i tak dalej.
źródło
Krótkie rozwiązanie wykorzystujące
map
i funkcję strzałkiOraz w przypadkach, gdy nieruchomość
"id"
nie jest obecna, użyjfilter
:źródło
ojej ... dlaczego wszyscy tak to utrudniają !!?
Twój fragment danych musi zostać trochę rozszerzony i tak musi być, aby był poprawnym jsonem. zauważ, że po prostu dołączam atrybut nazwy tablicy „item”
Twój skrypt java jest po prostu
źródło