Jscript связь между массивами

Обсуждение вопросов клиентского программирования.

Модератор: Duncon

Ответить
vlsopin
Сообщения: 5
Зарегистрирован: 18 ноя 2013, 01:01

18 ноя 2013, 01:22

Обнаружил совершенно случайно, что при добавлении в массив элемента из другого массива и изменении значения одного из элементов в данном массиве почему-то изменяется значение именно этого элемента в массиве, из которого добавлялся элемент!? Проверил на .push() и unshift результат одинаков!? Это дико мешает в работе, т.к. значения исходного массива все время меняются!? Кто встречал такой эффект!?
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

18 ноя 2013, 01:34

Тыб код привёл..
[syntax=Delphi] [/syntax]
vlsopin
Сообщения: 5
Зарегистрирован: 18 ноя 2013, 01:01

18 ноя 2013, 01:54

Обнаружил совершенно случайно, что при добавлении в массив элемента из другого массива и изменении значения одного из элементов в данном массиве почему-то изменяется значение именно этого элемента в массиве, из которого добавлялся элемент!? Проверил на .push() и unshift результат одинаков!? Это дико мешает в работе, т.к. значения исходного массива все время меняются!? Кто встречал такой эффект!?

vert2.push([1,1,1])
vert3.unshift(vert2[0]) ;
vert3[0][0]*=100;
alert(vert3[0][0]);alert(vert2[0][0]);
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

18 ноя 2013, 02:22

Инициализация массивов где?
[syntax=Delphi] [/syntax]
vlsopin
Сообщения: 5
Зарегистрирован: 18 ноя 2013, 01:01

18 ноя 2013, 13:27

Что трудно добавить vert2=[] vert3=[]? Так я проверил, что если добавлять в новый массив не : vert3.push(vert2[0]) а вот так - vert3.push([vert2[0][0],vert2[0][1],vert2[0][2]]) , то явления изменения исходного массива не происходит!? Во кино!?
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

18 ноя 2013, 13:59

Хромопера - 100,100
IE9 - 100,100
FF - 100, 100

ЧЯДНТ?
It's a long way to the top if you wanna rock'n'roll
vlsopin
Сообщения: 5
Зарегистрирован: 18 ноя 2013, 01:01

18 ноя 2013, 14:46

Кранты!? Что же делать? У меня скрипт 64 раза формирует массив из исходного массива 8 точек и после масштабирования исходный массив использовать нельзя!? Пришлось формировать каждый раз формировать этот массив снова!?
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

18 ноя 2013, 16:09

Поскольку vert2[0] - это объект (элемент массива), то в vert3 идет ссылка на него. Отсюда и проблема.
It's a long way to the top if you wanna rock'n'roll
vlsopin
Сообщения: 5
Зарегистрирован: 18 ноя 2013, 01:01

18 ноя 2013, 19:37

Я так и подумал!? Сейчас это мне мешает, но где-то может пригодиться. Спасибо за общение! Тема закрыта.
Ответить