Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.09.2007, 18:43
telit вне форума Посмотреть профиль Отправить личное сообщение для telit Найти все сообщения от telit
  № 1  
Ответить с цитированием
telit
 
Аватар для telit

Регистрация: Jul 2007
Сообщений: 306
Attention Array copy

У меня есть многомерный массив a[].
Как правильно записать в a[6] - a[0], чтобы при этом одновременно не менялись значения в a[0] и a[6]?

Старый 24.09.2007, 18:47
BigDan вне форума Посмотреть профиль Отправить личное сообщение для BigDan Найти все сообщения от BigDan
  № 2  
Ответить с цитированием
BigDan
 
Аватар для BigDan

Регистрация: Apr 2006
Адрес: Kiev
Сообщений: 1,675
Отправить сообщение для BigDan с помощью ICQ
если a[6] и a[0] - простые типы, то произойдёт обычное присвоение(без ссылки) значения.

Старый 24.09.2007, 18:49
telit вне форума Посмотреть профиль Отправить личное сообщение для telit Найти все сообщения от telit
  № 3  
Ответить с цитированием
telit
 
Аватар для telit

Регистрация: Jul 2007
Сообщений: 306
arr1[0] состоит из нескольки массивов!
Код:
a = []
a[0] = arr11.concat();
a[1] = arr22.concat();
a[2] = arr33.concat();
a[3] = arr44.concat();
a[4] = arr55.concat();
a[5] = arr00.concat();

arr1[0] = a.concat();
arr1[6] = arr1[0].concat();


Последний раз редактировалось telit; 24.09.2007 в 18:53.
Старый 24.09.2007, 19:44
telit вне форума Посмотреть профиль Отправить личное сообщение для telit Найти все сообщения от telit
  № 4  
Ответить с цитированием
telit
 
Аватар для telit

Регистрация: Jul 2007
Сообщений: 306
slice() тоже не помагает

Старый 24.09.2007, 19:55
BigDan вне форума Посмотреть профиль Отправить личное сообщение для BigDan Найти все сообщения от BigDan
  № 5  
Ответить с цитированием
BigDan
 
Аватар для BigDan

Регистрация: Apr 2006
Адрес: Kiev
Сообщений: 1,675
Отправить сообщение для BigDan с помощью ICQ
чем вас concat не устраивает?
Код:
var arr1:Array = new Array(1,2,3,4);
var arr2:Array = arr1;
trace("1: --------------------------");
trace("BEFORE:");
trace("I:"+arr1);
trace("II:"+arr2);
arr1[0] = "changed";
trace("AFTER:");
trace("I:"+arr1);
trace("II:"+arr2);
trace("2: --------------------------");
var arr1:Array = new Array(1,2,3,4);
var arr2:Array = arr1.concat();
trace("BEFORE:");
trace("I:"+arr1);
trace("II:"+arr2);
arr1[0] = "changed";
trace("AFTER:");
trace("I:"+arr1);
trace("II:"+arr2);

Старый 24.09.2007, 20:49
telit вне форума Посмотреть профиль Отправить личное сообщение для telit Найти все сообщения от telit
  № 6  
Ответить с цитированием
telit
 
Аватар для telit

Регистрация: Jul 2007
Сообщений: 306
Код:
arr11 = [1,2];
arr22 = [45,62]
a = []
a[0] = arr11.concat();
a[1] = arr22.concat();

arr_m = [];
arr_m[0] = a.concat();
arr_m[1] = a.concat();


arr_m[6] = arr_m[0].concat();
trace(arr_m[0]);//1,2,45,62
arr_m[6][0][0] = 500;
trace(arr_m[0]);//500,2,45,62
в структуре массив в массиве в массиве concat не работает не знаю почему!

Старый 24.09.2007, 20:53
BigDan вне форума Посмотреть профиль Отправить личное сообщение для BigDan Найти все сообщения от BigDan
  № 7  
Ответить с цитированием
BigDan
 
Аватар для BigDan

Регистрация: Apr 2006
Адрес: Kiev
Сообщений: 1,675
Отправить сообщение для BigDan с помощью ICQ
если у тебя массив - переменная простого типа(созданная с помощью = []), то ты не сможешь применить к нему метод concat()(так как это не объект Array).

Старый 24.09.2007, 21:03
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 8  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
Сообщение от BigDan
если у тебя массив - переменная простого типа(созданная с помощью = []), то ты не сможешь применить к нему метод concat()(так как это не объект Array).
Код:
trace([1].concat([2],[3]))
to telit: если ты делаешь копию массива с вложенными массивами, необходимо копировать и вложенные массивы, так как ты просто копируешь ссылки на эти массивы.


Последний раз редактировалось udaaff; 24.09.2007 в 21:12.
Старый 24.09.2007, 21:19
telit вне форума Посмотреть профиль Отправить личное сообщение для telit Найти все сообщения от telit
  № 9  
Ответить с цитированием
telit
 
Аватар для telit

Регистрация: Jul 2007
Сообщений: 306
то есть надо начинать копировать массив с самого нижнего уровня?

Старый 24.09.2007, 21:33
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 10  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Набросал нечто, вроде работает.
Код:
a = [[1], [2], [3], "string"];
b = arrayCopy(a)
trace(b[0][0]=666);
trace(a[0][0]);
function arrayCopy(array) {
	var newArray = [];
	for (var i in array) {
		if (typeof array[i] == "object") {
			newArray[i] = arrayCopy(array[i]);
		} else {
			newArray[i] = array[i];
		}
	}
	return newArray;
}


Последний раз редактировалось udaaff; 24.09.2007 в 21:36.
Создать новую тему Ответ Часовой пояс GMT +4, время: 21:24.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:24.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.