Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   как измерить длинну многомерного массива в 7? (http://www.flasher.ru/forum/showthread.php?t=71668)

gun 242 10.11.2005 20:59

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

andr64 11.11.2005 12:36

тебе можно сделать что то типа
...может тормозить
Код:

arr = new Array();
arr[[0, 1]] = 1;
arr[[0, 2]] = 2;
arr[[1, 1]] = 3;
arr[[1, 2]] = 4;
arr[[2, 1]] = 5;
arr[[2, 2]] = 6;
//
Array.prototype.len = function() {
        var l = 0;
        var a = [];
        for (var g in this) {
                //trace('key['+g+'] type['+typeof (g)+'] val['+this[g]+'] type['+typeof (this[g])+']');
                if (typeof (this[g]) != 'function') {
                        if (typeof (g) == 'string') {
                                var c = g.split(',', 2)[0];
                        } else {
                                var c = g;
                        }
                        if (a[c] == undefined) {
                                l++;
                                a[c] = true;
                        }
                }
        }
        return l;
};
//
trace(arr.len());

особенности массивов =)
Код:

a = [1, 2, 3];
trace('len='+a.length+' a=['+a+']');
//
a[6] = 6;
trace('len='+a.length+' a=['+a+']');
//
delete a[6];
trace('len='+a.length+' a=['+a+']');

а вообще такая запись a[[0,1]]=1; приводит к тому что ключ [0,1] конвертируется в строку.
Код:

aa = [];
aa[[0, 1]] = 1;
for (var g in aa) {
        trace(g+' '+typeof (g));
}


iNils 11.11.2005 13:13

Цитата:

Сообщение от andr64
а вообще такая запись a[[0,1]]=1; приводит к тому что ключ [0,1] конвертируется в строку.
Код:

aa = [];
aa[[0, 1]] = 1;
for (var g in aa) {
        trace(g+' '+typeof (g));
}


а такая? :)
aa = [];
aa[0] = 1;
aa[1] = 2;
for (var g in aa) {
trace(g+' '+typeof (g));
}

andr64 11.11.2005 13:30

ага :)
кароче строки рулят :rolleyes:

gun 242 11.11.2005 13:37

Цитата:

Сообщение от andr64
ага :)
кароче строки рулят :rolleyes:

а зачем таким способом лазить по массиву?
моим способом все данные прекрасно извлекаються без лишних усилий
arr = new Array();
arr[[0, 1]] = 1;
arr[[0, 2]] = 2;
arr[[1, 1]] = 3;
arr[[1, 2]] = 4;
arr[[2, 1]] = 5;
arr[[2, 2]] = 6;
for (i=0; i<arr.length; i++) {
trace(arr[[i, 1]]+" "+arr[[i, 2]]);
}

iNils 11.11.2005 13:52

Если "без лишних усилий", то зачем топик создал?

Если работает в 6-ке, то это не значит, что механизм правильный. В чем ты убедился столкнувшись с проблемой в 7-ке.

gun 242 11.11.2005 13:55

в общем пришлось сделать не так красиво, как хотелось бы
arr = new Array();
arr[[0, 1]] = 1;
arr[[0, 2]] = 2;
arr[[1, 1]] = 3;
arr[[1, 2]] = 4;
arr[[2, 1]] = 5;
arr[[2, 2]] = 6;
for (i=0; arr[[i, 1]]!=undefined; i++) {
trace(arr[[i, 1]]+" "+arr[[i, 2]]);
}

gun 242 11.11.2005 14:00

напиши какой механизм на твой взгляд правельный

andr64 11.11.2005 14:04

Цитата:

Сообщение от gun 242
в общем пришлось сделать не так красиво, как хотелось бы
arr = new Array();
arr[[0, 1]] = 1;
arr[[0, 2]] = 2;
arr[[1, 1]] = 3;
arr[[1, 2]] = 4;
arr[[2, 1]] = 5;
arr[[2, 2]] = 6;
for (i=0; arr[[i, 1]]!=undefined; i++) {
trace(arr[[i, 1]]+" "+arr[[i, 2]]);
}

так не пойдет, 2 послений пропадут:
Код:

arr = new Array();
arr[[0, 1]] = 1;
arr[[0, 2]] = 2;
arr[[1, 1]] = 3;
arr[[1, 2]] = 4;
arr[[2, 1]] = 5;
arr[[2, 2]] = 6;
//
arr[[7, 1]] = 75;
arr[[7, 2]] = 76;
//
for (i=0; arr[[i, 1]] != undefined; i++) {
        trace(arr[[i, 1]]+" "+arr[[i, 2]]);
}


gun 242 11.11.2005 14:09

поэтму этот вариант и некрасивый.
но в моём случае он подходит т.к. весь массив заполнен.


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

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