![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
требуется создать 2-мерный массив(первая цифра номер точки, вторая - номер координаты), а потом его пополнять точками. При пополнении берутся координаты предыдущей точки, а потом изменяются.
Код, который аботает как надо points = new Array(); points[0]=[0,0,1]; points[1]=new Array(); for(i=0;i<points[0].length;i++)points[1][i]=points[0][i]; points[1][2] = 0.5; Код, который на мой взгляд тоже должен работать как надо(ничто не предвещало беды) points = new Array(); points[0]=[0,0,1]; points[1]=points[0]; points[1][2]=0.5; и то, что я смог придумать подобного(без цикла) изменяет к тому же значение points[0][2] Код points = new Array(); points[0]=[0,0,1]; points[1]=new Array(); points[1]=points[0]; вообще в дебаггере выдаёт интересный результат. Вопрос - можно ли как-то добиться эффекта работающего кода без цикла (ибо цикл, на мой взгляд тут некошерно смотрится). |
|
|||||
|
don't panic!
Регистрация: Aug 2001
Сообщений: 4,121
|
Цитата:
элементарные типы данных присваиваются по значению а сложные - по ссылке. (получается что два (или более) идентификатора указывают на одно и то же) объекты/массивы/функции - это сложные типы. числа/строки/булевы значения/undefined - это элементарные. если нужно создать копию массива, лучше всего воспользоваться одной из функций работы с массивом, которая в результате выдает новый массив. например concat или slice. points = new Array(); points[0] = [0,0,1]; points[1] = points[0].concat(); Цитата:
|
|
|||||
|
спасибо, оперативно. Надо было мне больше пробовать с concat итп
|
![]() |
Часовой пояс GMT +4, время: 06:59. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|