Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   длинна массива со строковыми индексами (http://www.flasher.ru/forum/showthread.php?t=117376)

DRAGOnoid 26.10.2008 16:48

длинна массива со строковыми индексами
 
Код:

var arr:Array        =    new Array();
        arr['a']        =    1;
        arr['b']        =    2;
        arr['c']        =    3;
   
trace (arr.length);        //        выдаст 0
trace (arr['c']);        //        выдаст 3 (значение есть)

я просто раньше никогда не делал строковых индексов в массиве и стакой проблемой не сталкивался, а это прям как то странно совсем.
Что делать? Как получить длину такого массива?

BlooDHounD 26.10.2008 17:31

строковых индексов не бывает. бывают ключи. именно поэтому и не бывает ассоциативных массивов.

@see http://www.flasher.ru/forum/showthre...ht=associative

wvxvw 26.10.2008 17:32

Ну это вобщем-то не массив, это просто возможность любого динамического класса создавать такие же динамические свойства. Если нужно количество свойств - ну, просто в for-in инкрементить переменную и вернуть значение, типа так:
Код:

var obj:Object = {};
obj["a"] = "a";
obj["b"] = "b";
obj["c"] = "c";
var i:int;
for(var p:String in obj)
{
        i++;
}
trace(i);


WGR 26.10.2008 17:36

Код:

var arr:Array=    new Array();
arr['a']        =    1;
arr['b']        =    2;
arr['c']        =    3;
trace(typeof(arr)); //object

...
arr.push({name:'a',val:1});
arr.push({name:'b',val:2});
arr.push({name:'c',val:3});

trace(arr.length); //3
trace(arr[2].name); //c


DRAGOnoid 26.10.2008 18:08

спасибо!


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

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