2009-07-14 5 views
5

mam tablicę w JavaScript:Przelotowe elementy tablicy w JavaScript

var array = new array(); 
array[0] = "apples"; 
array[1] = "oranges"; 
array[2] = "pears"; 

php, z danej tablicy, można użyć następujących pętli tablicy i rozbijania klucze i wartości:

foreach ($array as $key => $value) { 
    echo("Key is $key and Value is $value"); 
} 

Jak mogę to zrobić w JavaScript? Jestem świadomy:

for (x in array){ 
    // Do something with x. 
} 

Ale nie znalazłem niczego, co zreplikuje foreach na php. Czy możliwe jest zwięzłe osiągnięcie czegoś podobnego w JavaScript? (Używam również jQuery, jeśli coś można zrobić w jQuery).

+0

Prawdopodobny duplikat: http: // stackoverflow.com/questions/1078118/how-to-iterate-over-a-json-structure –

Odpowiedz

14

Najpierw

var array=[]; 

jest korzystniejsze "nowy".

drugie, klucze są numeryczne w tym przypadku, tak po prostu zrobić:

for (i=0;i<array.length;i++) { 
    console.log("Key is "+i+" and Value is "+array[i]); 
} 

Jeśli chcesz mieć klucze, które nie są numeryczne, należy użyć obiektu JavaScript zamiast tablicy. Poprawne jest używanie łańcuchów zamiast liczb jako indeksów tablicowych, ale JavaScript nie ma na to wiele wsparcia.


Używam "console.log", ponieważ zakładam, że nie chcesz pojawiać się kilka alertów. console.log może zostać zastąpiony tym, czego używasz do rejestrowania informacji. Zamiast tego możesz użyć funkcji alert() lub wpisać tekst w div.

+3

Powinieneś dodać, że console.log wymaga firefox z firebug. – ichiban

+0

@ichiban. Słuszna uwaga. Poprawiłem moją odpowiedź, aby o tym wspomnieć. – Nosredna

+0

Odpowiedź jest taka, że ​​używam obiektów JavaScript, ponieważ wydaje mi się, że potrzebuję czegoś bardziej elastycznego niż standardowa tablica. (Moje tablice są generowane dynamicznie i zawierają wartości, które nie są numeryczne). Dzięki za odpowiedź. – EvilChookie

0

Jeśli zamówienie nie jest priorytetem (lub nawet jeśli jest, zawsze można po prostu odwrócić tablicę), tu jest mój ulubiony sposób:

var i = array.length; 
while(i--) { 
    console.log("key is " + i + " and value is " + array[i]); 
} 

To podejście działa, ponieważ liczba 0 ocenia jako false w JavaScript.

8

Korzystanie jQuery.each można napisać coś podobnego do (nie sprawdzone)

jQuery.each(array, function(k,v) { 
    console.log("K: "+,k," V:",v); 
}); 
+0

Poza tym wymagałoby to jQuery ... –

+7

zgodnie z zapytaniem w pytaniu. – SilentGhost

0

jQuery nie jest potrzebny do tego rodzaju zadania, to może po prostu użyć pętli, że jest to wskazane sposób pętli tablica w JS. Możesz przeczytać ten link text bardziej szczegółowych informacji

1

spojrzeć underscorejs.org - z nim zrobić to w ten sposób:

_.each(array, function(element, index, array) { 
    doSomething(item, index); 
}); 

jest ona wykorzystywana przez backbone.js i wiele innych ram/bibliotek, jak meteor, np Ma 80 lub bardzo przydatne funkcje - jeśli poważnie myślisz o javascript, poświęć 30 minut na przeczytanie całej strony podkreślenia, nigdy nie będziesz chciał koduwać niczego poza javascript.

1
for (x in array){ 

    var arrayItem = array[x] 

} 

Ten typ pętli for działa, ale daje raczej pozycję tablicy niż element z samej tablicy. Jest dość zwięzły i używam go cały czas.