Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с массивами. (https://javascript.ru/forum/misc/4075-problema-s-massivami.html)

RRRinat 20.06.2009 18:38

Проблема с массивами.
 
Здраствуйте. помогите пожалуйста решить новичку одну проблему.
Есть определенный массив. А в массиве еще один массив.

т.е:
table[0] = new Array(0, 0, 0, 0, 0 ... );
table[1] = new Array(0, 0, 0, 0, 0 ...);
table[2] = new Array(0, 0, 0, 0, 0 ... );
table[3] = new Array(0, 0, 0, 0, 0 ... );
...
Я пытаюсь поменять только значение внутреннего массива следующим способом
table[2][1] = 1;

Должно получится вот так:

0 0 0 0 0
0 0 0 0 0
1 0 0 0 0
0 0 0 0 0
Однако в результате получаю вот это.
1 0 0 0 0
1 0 0 0 0
1 0 0 0 0
1 0 0 0 0

Пробовал также изменять значения с помощью функции splice, однако результат получается такой же.
Что не так? В чем косяк?

Octane 20.06.2009 19:21

Не могло так получится и нумерация элементов массива начинается с нуля:

var table = [
	[0, 0, 0, 0, 0],
	[0, 0, 0, 0, 0],
	[0, 0, 0, 0, 0],
	[0, 0, 0, 0, 0]
];

table[2][0] = 1;

alert(table.join("\n"));


Ваша ситуация могла произойти только в подобном случае:

var array = [0, 0, 0, 0, 0];
var table = [array, array, array, array];

table[2][0] = 1;

alert(table.join("\n"));

потому что массив, как объект, передается по ссылке, а не копируется.

RRRinat 20.06.2009 23:10

Octane:
Спасибо, проблема проблема оказалась выше в коде как ты предсказал массив создавался вот таким:
Цитата:

var table = [array, array, array, array];
Сейчас все исправил, работает.


Часовой пояс GMT +3, время: 17:54.