Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   trace ассоц.массива ассоц.массивов (http://www.flasher.ru/forum/showthread.php?t=98019)

$mival 04.07.2007 23:46

trace ассоц.массива ассоц.массивов
 
Дан код:

Код:

for (var y = 0, arr = []; y<=30; y++) {
        arr["aaa" + y] = [];
        for (var x = 0; x<=40; x++) {
                arr["aaa" + y]["bbb" + x] = 0;
        }
}

trace("arr: " + arr["aaa0"]["bbb0"]);
trace("arr: " + arr["aaa0"]);
trace("arr: " + arr);

Из трейсов покажет нам элемент массива только первый. Зато если мы будем использовать нумерованный массив массива:

Код:

for (var y = 0, arr = []; y<=30; y++) {
        arr[y] = [];
        for (var x = 0; x<=40; x++) {
                arr[y][x] = 0;
        }
}

trace("arr: " + arr[0][0]);
trace("arr: " + arr[0]);
trace("arr: " + arr);

то все трейсы покажут то, что надо.
Так и должно быть?
Сколько работаю, первый раз столкнулся. :mosking:

BigDan 04.07.2007 23:57

дело в том, что в первом случае мы имеем дело не с массивом, а с объектами(в этом легко убедится: trace(arr.aaa0.bbb0)), поэтому не трейсится arr["aaa0"](потому что он не массив, а объект)
Код:

trace("arr: " + typeof arr["aaa0"]);//object

Kikasso 04.07.2007 23:59

Так и дожно быть. "Ассоциативный массив" - это обычный массив, в который добавили свойства. Точно так же вы можете добавить свойства в любой объект, хоть в Number, хоть в Function:
Код:

function t(){};
t['test'] = 'TEST';
trace(t['test']);
var n:Number = new Number( 55 );
n['test'] = 'TEST';
n[55] = 'fiftyfive';
trace( n[55] );
trace( n['test'] );
trace(n);

Не стоит только на это полагаться ))

$mival 05.07.2007 00:35

ок.
теперь можно со спокойной совестью идти спать.


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

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