PDA

Просмотр полной версии : Двухмерный массив


Olowokandi
11.07.2007, 17:34
Извените за очень ламерский вопрос, но по хелпу флеша я понял, что чтобы задать двухмерный массив нужно описать все элементы, это так?

Хотелось бы как в РНР [1..20] в таком духе, подскажите если это реально то как задать 2Д массив 10 на 20?

BigDan
11.07.2007, 17:48
var arr:Array = [[],[],[],[],[],[]]

iNils
11.07.2007, 17:54
function createArray2d (size:Number):Array {
var array:Array = new Array ();
for (var i:Number = 0; i < size; i++) {
array.push ([]);
}
return array;
}
var array:Array = createArray2d (10);
trace (array)Задавать вторую размерность не надо, флеш динамически меняет размер массива.

Olowokandi
11.07.2007, 18:41
OK, Спасибо, и еще вопрос а как его обнулить весь? только циклом, функции не существует?

iNils
11.07.2007, 18:44
Перед забивкой данных, сделать его пустую копию, а потом обратно присвоить. Только не просто присвоить, иначе это будет ссылка на массив, а с помощью concat
//// делаем пустую копию
copy = source.concat ();
...
//// тут заполняем массив source
...
//// обнуляем
source = copy.concat ();

Olowokandi
11.07.2007, 19:07
Еще раз спасибо

CrazyFlasher
12.07.2007, 01:55
кстати, если делать копию массива таким способом:


arr = [1,2,3];
var tempStr:String = arr.toString();
var newArr:Array = new Array();
newArr = tempStr.split(",");


Эта операция намного медленнее?

iNils
12.07.2007, 03:07
Медленнее в 2,5 раза

Ведьмак
12.07.2007, 15:02
2 iNils: что-то ничерта не понял в коде (3 пост)... как нам обращаться к конкретному элементу массива? например к (1,9) ? попробовал - ничего не получается...

iNils
12.07.2007, 15:07
array[1][9]

Ведьмак
12.07.2007, 15:39
клева...