2014-12-23 14 views
10

Używam okna Google Chrome Console, aby spróbować dowiedzieć się, dlaczego nie jestem w stanie zapętlić tablicy w javascript.Loop Over Array w JavaScript

Mam JavaScript Object nazwie moveResult, który wygląda tak:

enter image description here

Próbuję pętli nad MoveParts w javascript tak:

for (var movePart in moveResult.MoveParts) { 
    console.log(movePart.From); 
}; 

zawsze dotrzesz undefined zamiast rzeczywistej wartości. Jednakże, jeśli próbuję uzyskać dostęp do pierwszego elementu wyraźnie mam co chcę, tak:

console.log(moveResult.MoveParts[0].From); 

Wynikiem tego jest "b1".

Dlaczego moja pętla nie działa?

Próbowałem również foreach:

moveResult.MoveParts.foreach(function (movePart) { 
    console.log(movePart.From); 
}; 

Odpowiedz

6

Próbuję pętli nad MoveParts w javascript tak:

for (var movePart in moveResult.MoveParts) { 
    console.log(movePart.From); 
}; 

zawsze dotrzesz niezdefiniowany zamiast aktualna wartość.

Nie używaj for-in do przechodzenia między tablicami, to nie jest to, do czego służy. for-in służy do przechodzenia między właściwościami obiektu. This answer shows various ways to loop through arrays.

Powodem swoje for-in nie działa jest to, że movePart jest klucz, a nie rzeczywista pozycja, więc jeśli były przy użyciu obiektu (nie tablicę!) Byś stosowane moveResult.MoveParts[movePart].From.

Twoja wersja forEach tylko powiodła się, ponieważ:

  1. To forEach nie foreach. Kapitalizacja ma znaczenie w JavaScript.

  2. Brakowało zamknięcia ) w wywołaniu funkcji.

Odpowiedź związana powyżej ma pełne przykładów forEach i innych, ale oto jak powinno ciebie wyglądało:

moveResult.MoveParts.forEach(function (movePart) { 
    // Capital E -----------^ 
     console.log(movePart.From); 
    }); 
// ^---- closing) 
+0

jak wyjaśniono tutaj: http: // stackoverflow .com/questions/9329446/for-over-an-tablica-in-javascript –

-1

spróbować

moveResult.MoveParts.map(function (movePart) { 
    console.log(movePart.From); 
}; 
+0

Ostrzeżenie: 'Array.prototype.map' nie istnieje w starszych przeglądarkach. http://kangax.github.io/compat-table/es5/#Array.prototype.map – Halcyon