Rozważmy przykład kod Javascript:JavaScript deklaracji tablicy: New Array(), nowe Array (3) [ 'a', 'b', 'c'] tworzenia tablic, które zachowują się w różny sposób
a = new Array();
a['a1']='foo';
a['a2']='bar';
b = new Array(2);
b['b1']='foo';
b['b2']='bar';
c=['c1','c2','c3'];
console.log(a);
console.log(b);
console.log(c);
Wyniki w konsoli Firebug są następujące:
do a ('[]' musiały być rozszerzona przez kliknięcie przycisku '+')
[]
a1 "foo"
a2 "bar"
B:
[undefined, undefined]
dla C:
["c1", "c2", "c3"]
moje pytania są następujące:
- używam tablicy składnia [ 'klucz'] = 'wartość' = prawidłowo?
- Dlaczego tablica b nie działa zgodnie z oczekiwaniami?
- Dlaczego tablice a i c wyświetlane są inaczej w konsoli? Wydaje się również, że jQuery nie jest w stanie iterować poprzez tablicę a przy użyciu metody .each().
- Czy możesz polecić jakieś dobre samouczki dotyczące zachowania tablicy JavaScript?
UWAGA: Google Chrome Firebug wyświetla tylko [] na tablicy 'a', bez opcji, aby go rozwinąć.
EDIT: W porządku, wydaje się, że tablice w JavaScript mają tylko klawisze numeryczne, więc dodając ciąg jako kluczowy nazwa sprawia, że obiekt z tablicy. Ale dlaczego jQuery nie współpracuje z jQuery?
$.each(a, function()
{
alert ('derp');
})
Ten kod, dołączony do skryptu, nie generuje alertów.
Mylicie obiekty tablicowe JavaScript z tablicami asocjacyjnymi dostępnymi w językach takich jak PHP. Tablice JavaScript używają tylko indeksów numerycznych. Używanie składni 'a ['a1'] = val' dodaje właściwość' a1' do obiektu 'a', a nie wartość tablicy. –
@ P.Brian.Mackey: Prawdopodobnie dlatego, że tego rodzaju pytanie było zadawane wiele razy na SO. – RightSaidFred
@exizt: Firebug i podobne narzędzia tworzą założenia dotyczące tego, co chcesz wyświetlić. Niekoniecznie są one doskonałą reprezentacją tego języka, chociaż zgodnie z poniższą odpowiedzą, zwykle najlepiej jest polegać wyłącznie na właściwościach numerycznych w tablicach JavaScript. – RightSaidFred