Deklarowanie tablic wielowymiarowych

Deklarowanie tablic wielowymiarowych
KO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 114
0

Jak zdefiniować tablice np. dwuwymiarową, gdy robię tak zmienna = [] wyskakuje błąd undefined przy próbie zmienna[0][0]='cos'

BS
  • Rejestracja: dni
  • Ostatnio: dni
1

W JavaScripcie nie ma tablic dwuwymiarowych, ale możesz stworzyć tablicę tablic, co daje w praktyce coś w rodzaju tablicy dwuwymiarowej. Musisz jednak znać z góry jeden wymiar, ten pierwszy.

Żeby zadeklarować tablicę 2x2 z następującymi elementami:

Kopiuj
11 12
21 22
31 32

wystarczy napisać taki kod:

Kopiuj
var tablica = [ [11, 12], [21, 22], [31, 32] ];

Możesz łatwo napisać funkcję, która stworzy pustą "tablicę dwuwymiarową" o n wierszach:

Kopiuj
function tablica_dwuwymiarowa(liczba_wierszy) {
  var tab = new Array(liczba_wierszy);
  for (var i = 0; i < liczba_wierszy; i++) {
    tab[i] = [];
  }
  return tab;
}

// użycie
var tab2d = tablica_dwuwymiarowa(3);
tab2d[0][0] = 11;
tab2d[0][1] = 12;
tab2d[1][0] = 21;
tab2d[1][1] = 22;
tab2d[2][0] = 31;
tab2d[2][1] = 32;

Zauważ jednak, że jeśli chcesz stworzyć tablicę o znanych elementach, to lepiej było to zrobić za pomocą zagnieżdżonych literałów [], tak jak pokazałem w pierwszym przykładzie.

Zauważ też, że nic nie stoi na przeszkodzie, by tablica była krzywa, tzn. miała N "wierszy", ale każdy wiersz miał różną liczbę "kolumn".

Np. możemy stworzyć "krzywą" tablicę tablic z następującymi wartościami:

Kopiuj
11
21 22
31 32 33

takim kodem:

Kopiuj
var tab = [
  [11],
  [21, 22],
  [31, 32, 33]
];
KO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 114
0

to trochę lipa, muszę całość od początku pisać :P dzięki za pomoc

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.