Mój problem, że z niezrozumiałych dla mnie przyczyn każdy element mojej tablicy ma taką samą wartość.
Nie jestem ekspertem od JS, dlatego mogłem coś przeoczyć, dlatego wrzucę tutaj kod:
Najpierw deklaruję (w tagu head):
Kod
var game_board_history = new Array();
Potem zapisuję do niej tablicę dwuwymiarową (6x7) w funkcji podczepionej do body onLoad:
Kod
game_board_history[0] = game_board;
później gdy wystąpi zdarzenie zapisuje do niej zaktualizowaną wersję tamtej tablicy:
Kod
len = game_board_history.length;
game_board_history[len] = game_board;
game_board_history[len] = game_board;
Wiem, że sposób nie jest wyższych lotów, ale to już kolejna wersja, próbowałem już i push i jakiś innych funkcji, ale dalej się dzieje to samo.
Po dodaniu do tamtej tablicy próbuję ją odczytać (już kolejna wersja sprawdzania):
Kod
for (z=0; z<game_board_history.length; ++z)
{
var wynik = '';
for (i=5; i>=0; --i)
{
for(j=0; j<6; ++j)
wynik = wynik + " " + game_board_history[z][i][j];
wynik += '\n';
}
alert(wynik);
}
{
var wynik = '';
for (i=5; i>=0; --i)
{
for(j=0; j<6; ++j)
wynik = wynik + " " + game_board_history[z][i][j];
wynik += '\n';
}
alert(wynik);
}
To są wszystkie funkcje które wpływają na ową zmienną, ale pomimo, że nie powinno, ostatnia funkcja wyświetla mi w każdej komórce dokładnie tą samą wartość.
I nie mam pojęcia dlaczego - próbowałem już i z funkcjami push i pop, i ręcznie (jak w kodzie powyżej), nie wiem czemu się tak dzieje.
Z góry dzięki za pomoc
Istalacar
EDIT:
Stworzyłem taką funkcję:
Kod
function overwrite_arrays(first, second)
{
for (i=5; i>=0; --i)
for(j=0; j<6; ++j)
first[i][j] = second[i][j];
return first;
}
{
for (i=5; i>=0; --i)
for(j=0; j<6; ++j)
first[i][j] = second[i][j];
return first;
}
Jeśli macie może jakąś poradę - można byłoby to zrobić prościej, proszę napiszcie, ale generalnie problem jest już rozwiązany:)