Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   как получить новый массов? (http://www.flasher.ru/forum/showthread.php?t=65165)

nuran 24.11.2004 17:11

как получить новый массов?
 
Как скопировать массив, не ссылку а массив, т.е.

someArray = someArray2
даст в someArray лишь ссылку на someArray, а как именно скопировать someArray2, чтобы в someArray оказалась его копия?

netCat 24.11.2004 17:16

через цикл push'ить элементы первого массива во второй

Nox Noctis 24.11.2004 17:20

Код:

a = [0,0,0];
b = a.concat();
b[0] = 9;
a[0] = 999;
trace(a);
trace(b);


DeliMIter 24.11.2004 17:28

Нуран, да ты никак флэш решил изучить : ))))) ?

nuran 24.11.2004 17:37

Цитата:

Оригинал написал(а) Nox Noctis
Код:

a = [0,0,0];
b = a.concat();
b[0] = 9;
a[0] = 999;
trace(a);
trace(b);


окей, а как сравнивать массивы, не уж то каждый элемент? :confused:
может что нибудь интересней есть?

a = [9,0,0];
b = a.concat();
trace(a);
trace(b);
trace(a == b);

Nox Noctis 24.11.2004 18:10

Цитата:

Оригинал написал(а) nuran
окей, а как сравнивать массивы, не уж то каждый элемент? :confused:
может что нибудь интересней есть?

нуран, ты меня убиваешь... как ты писал свои движки, не пользуясь такими вещами? :)

сравнить одномерные массивы, в которых лежат простые типы данных, можно просто преобразовав изх в строку.

а вот если в массиве встречаются объекты - тогда придется перебирать... или еще как-нибудь извращаться.

Код:

a = [9, 0, 0, "nuran", "in da actionscript"];
b = a.concat();
trace(a);
trace(b);
trace(a.join(chr(31)) == b.join(chr(31)));

chr(31) взято просто на случай если в массивах лежат строки. символ chr(31) как правило в строках не встречается :) поэтому можно его взять в качестве разделителя. (а можно при необходимости другой символ)

Штрек 24.11.2004 18:16

Цитата:

Оригинал написал(а) DeliMIter
Нуран, да ты никак флэш решил изучить : ))))) ?
Надо помочь человеку,
он легко ранимый...
или раненый.... :p

Штрек 24.11.2004 18:19

А что
a.slice(0)
не катит?

nuran 24.11.2004 18:21

Цитата:

Оригинал написал(а) DeliMIter
Нуран, да ты никак флэш решил изучить : ))))) ?
Учиться никогда не поздно, и я не стыжусь что я не всё знаю. :)



2Nox

> нуран, ты меня убиваешь... как ты писал свои движки, не пользуясь такими вещами? :)

Ну там шло сравнение поэлементно ... к томуже каждый объект имел свои функции сравнения.


типа Vector.Operater_MoreThan(someVector);

Да, похоже придётся делать перебор ...




просто большой проект делаю, приходится всё мои минусы исправлять ;)

Спасибо, нокс.

Nox Noctis 24.11.2004 18:27

Цитата:

Оригинал написал(а) Штрек
А что
a.slice(0)
не катит?

я разве говорил что не катит? :)
просто копирование конкатом уже в привычку вошло

nuran 24.11.2004 18:27

не думайте что я совсем уж глупый ;) просто ищу самые лучшие пути реализации :)

надо двигаться в ногу со временем :)

nuran 24.11.2004 18:33

Кстати, чтобы это работало, у всех объектов в массове должны быть методы toString ();

Nox Noctis 24.11.2004 19:27

Цитата:

Оригинал написал(а) nuran
Кстати, чтобы это работало, у всех объектов в массове должны быть методы toString ();
он у всех объенктов и так есть. просто нужно его у каждого объекта персонально переписать. иначе там будет "[object Object]" в качестве тустринга. вобщем это я и назвал извращениями :)

DeliMIter 24.11.2004 20:06

Не, мы тебя не считаем совсем глупым : )))
Лан, это я просто жестко излагаю то, что Нокс сказал мягко. Очень странным смотрятся рядом авторство трехмерных движков и... нет, не незнание. Ни в коем случае. Не знать - это личное право каждого. Но - неспособность самому придумать алгоритм, отыскав для этого достаточно несложные (а операции с массивами в хелпе отнюдь не спрятаны) ходы. Вот что настораживает. Трехмерные расчеты - это достаточно сложная и кропотливая работа, требующая внимания, усердия, и действительно способности находить решения, не лежащие на поверхности. Не подумай, никаких упреков, никаких претензий, только вот это странное чувство несоответствия...

nuran 24.11.2004 21:01

О боже! Опять намёки на плагиат :(

Whatsername 25.11.2004 11:31

Цитата:

chr(31) взято просто на случай если в массивах лежат строки. символ chr(31) как правило в строках не встречается :) поэтому можно его взять в качестве разделителя. (а можно при необходимости другой символ) [/b]
Не догоняю зачем join(chr(31)) использовать? Разве toString() дает другой результат?

Nox Noctis 25.11.2004 12:02

нужно джойнить с таким разделителем, который гарантированно не встречается внутри элементов массивов.

иначе получится вот что:

a = ["test1,test2", "test3"];
b = ["test1", "test2", "test3"];
trace(b.join() == a.join());

выдаёт true, хотя массивы имеют разные элементы.

Whatsername 25.11.2004 12:34

Тонко! Спасибо, Нокс : )


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

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