Форум 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=58940)

udodddd 02.06.2004 19:34

Вложенные массивы.
 
Как создать в одном массиве другой.
Как обратиться к этому вложенному массиву.
И еще.
Я тут сначала в поиске посотрел, нашел сообщение, где говориться, что во флеше нет масивов, а то что есть, это так, фигня (это вольное изложение моим языком).
Как это понимать?

udodddd 02.06.2004 20:05

Ну как обращаться, вроде нашел.
Например:
dod = new Array("dod1","dod2","dod3");
dod[1]=new Array("koko1","koko2","koko3","koko3");
trace(dod[1].length);
trace(dod[1][2]);

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

FreeLander 02.06.2004 20:21

http://www.flasher.ru/forum/showthre...threadid=58350
в конце страницы

udodddd 02.06.2004 20:27

Спасибо, все понял.

udodddd 02.06.2004 21:12

Черт. Все равно вопросы остались.
Я лучше конкретно изложу, что мне нужно...
Значит так, сначала создается один массив:

if (success == true) {
for (i=0; i<links.firstChild.childNodes.length; i++) {
class[i] = links.firstChild.childNodes[i].attributes.inf;

потом всякая вигня с ним. Там копируются кнопки и к ним присваиваются разные действия.
А вот затем, мне нужно в каждом из эллементов этого массива сделать еще один массив и присвоить туда значения из xml файла.
То, что я делал нифига не работает. А как сделать правильно, незнаю.

for (z=0; z<links.firstChild.childNodes[i].childNodes.length; z++) {
class[[i][z]] = links.firstChild.childNodes[i].childNodesхz].childNodes[0].childNodes;
trace(class[[i][z]]);
}
}
}
Когда этот скрипт выполняется, выводится значение только первого массива.
Все остальные - undefined.

Вот на всякий случай кусок xml, откуда все это берется:
<links_xml>
<class inf="класс1">
<link>
<link>ссылка1</link>
<info>инфа1</info>
</link>
<link>
<link>ссылка2</link>
<info>инфа2</info>
</link>
...

...
</class>
<class inf="класс2">
...

...
</class>
</links_xml>

artfla$her 03.06.2004 01:36

Не, этак ты далеко не уедешь... Правильно class[i][z] = значение. К сколь угодно вложенному массиву можно обратиться именно таким образом

myArray = [ [ [ [0, 1], [2, 3] ], [7, 7] ] ]

myArray[0][0][1][0] // значение 2

Т.е. по степени вложенности, скобки друг за другом.
Главное - не запутаться.

FreeLander 03.06.2004 15:37

Создаёшь массив, каждым из элементов которого является также массив:
Код:

class_array = new Array();
for (var i=0; i<10; i++){
        class_array[i]=new Array();
        }

а потом заполняешь каждый из этих массивов

Код:

for (var i=0; i<10; i++){
        for (var j=0; j<10; j++){
                class_array[i].push(j);
                }
        }


вместо
class_array[i].push(j);
можно написать
class_array[i][j]=j;

вроде всё..

FreeLander 03.06.2004 15:41

нет, не всё.
если пользовать push(), то первый цикл не нужен...
вроде так

udodddd 03.06.2004 18:05

Выглядит понятно.
И просто.
И даже появляются мысли о том, почему же я сам не смог это придумать. Я их гоню прочь.
Благодарю всех за советы.
Спасибо.
Пошел пробовать.


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

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