Форум Flasher.ru

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

UserSuperPupsik 08.09.2013 15:23

length для многомерного массива
 
Здравствуйте.Пишу в кадре.
Может быть кто-нибудь покажет, как использовать length для 2-мерного массива и для 3-мерного массива!?!
Вот мои массивы.
Код AS3:

//создать 3-мерный массив**********************************************
var F,M,i0,i00:int;
F=1;
M=1;
var Arr:Array=new Array(10);
 
for(i00=1;i00<=10;i00++){
                        Arr[M]=new Array(10);
                        M++;
                                    }
M=1;
F=1;
 
 
 
for(i00=1;i00<=10;i00++){
                                      for(i0=1;i0<=10;i0++){
                                      Arr[M][F]=new Array(10);
                                      F++                                       
                                                            }
                            M++
                            }
 
Arr[1][1][1]="2 1 1 1 2 2 3 3";
trace(Arr[1][1][1]);
trace("Arr.length: ", Arr.length);
//******************************************************************
 
//создать 2-мерный массив********************************************
var Arr2:Array = new Array(8)
for(i0=1;i0<=8;i0++){
                            Arr2[i0]=new Array(8);
 
                                                    }
trace("Arr2.length: ",Arr2.length );
 
//******************************************************************


Akopalipsis 08.09.2013 15:58

Код AS3:

var arrayA:Array = [0,1,2,3,4,5,6];
var arrayB:Array = [arrayA];
trace(arrayA.length, arrayB.length, arrayB[0].length);//7,1,7


chamele0n 08.09.2013 16:48

странная конструкция, врятли ее можно гденибуть использовать, больше похоже на домашнее задание по информатике ))
ну если надо найти все елементы то можно взять обычную рекурсию
Код AS3:

var a:Array = new Array([2,2,3],[1,1,1,1,1],[1,[2,2]]);
 
function rlength(a:Array) : int {
        var len:int = 0;
        for(var i:int=0;i<a.length;i++) len += typeof a[i] == 'object' ? rlength(a[i]) : 1;
        return len;       
}
 
 
trace(rlength(a));


UserSuperPupsik 08.09.2013 19:37

Что за фокусы, chamele0n?Если массив заполнен:
Код AS3:

var Arr5:Array = new Array(2);
for(i0=1;i0<=2;i0++){
Arr5[i0]=new Array(2);}
 
Arr5[0]=1;
Arr5[1][0]=2;
Arr5[1][1]=3;
Arr5[1][2]=4;
Arr5[2][0]=5;
Arr5[2][1]=6;
Arr5[2][2]=7;
 
trace("Arr5: ", Arr5);
trace("rlegth(Arr5): ",rlength(Arr5));

-,то кол-во элементов: 7.

А если массив не заполнен:
Код AS3:

var Arr5:Array = new Array(2);
for(i0=1;i0<=2;i0++){
Arr5[i0]=new Array(2);}
/*
Arr5[0]=1;
Arr5[1][0]=2;
Arr5[1][1]=3;
Arr5[1][2]=4;
Arr5[2][0]=5;
Arr5[2][1]=6;
Arr5[2][2]=7;
*/
                       
trace("Arr5: ", Arr5);
trace("rlegth(Arr5): ",rlength(Arr5));

-,то кол-во элементов: 5 .
Но мы то знаем, что и кол-во элементов в обоих случаях 7!!!Почему так?

Akopalipsis 08.09.2013 19:45

А почему Вы считаете, что во втором случаи семь элементов?

Psycho Tiger 08.09.2013 20:05

А какая длина у двумерного массива
Код AS3:

[
 [1,2,3],
 [4,5,6]
]

?

chamele0n 08.09.2013 20:15

ну во первых елементы масиива начинаются с нулевого индекса
Цитата:

Сообщение от UserSuperPupsik (Сообщение 1145801)
[as3]var Arr5:Array = new Array(2);
for(i0=1;i0<=2;i0++){
Arr5[i0]=new Array(2);
}

Растолкую вам, если плохо с арифметикой

Код AS3:

var Arr5:Array = new Array(2);

это два елемента Arr5[0] и Arr5[1]

Код AS3:

for(i0=1;i0<=2;i0++){
  Arr5[i0]=new Array(2);
}

цикл выполняется два раза
1й раз Arr5[1] = new Array(2); - это еще два елемента
2й раз Arr5[2] = new Array(2); - это еще два елемента

итого получается массив
Arr5 = [undefined, [undefined,undefined], [undefined,undefined]] - 5 елементов

Akopalipsis 08.09.2013 20:17

Цитата:

А какая длина у двумерного массива
Два?) А говоря о длине двухмерного массива, подразумевается сумма всех имеющихся в нем элементов?

Добавлено через 3 минуты
Код AS3:

[
 [1,2,3],
 [4,5,6]
]

я думал, что длина будет два, а у вложенных, по три.

UserSuperPupsik 08.09.2013 22:07

А извините,я почему-то принял за истину, что
Код AS3:

var Arr:Array=new Array(2);

создает массив из 3 элементов:
Arr[0],Arr[1],Arr[2];. На самом деле за истину нужно взять утверждение, что
Код AS3:

var Arr:Array=new Array(2);

создает массив из 2 элемнтов: Arr[0],Arr[1].Всё работает, спасибо Всем за коды или/и объяснения!!!


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

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