|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Dec 2002
Адрес: Живу вот где-то
Сообщений: 493
|
Модификация массива и ... сортировка чтоли?!
Доброе время всем! Вот проблемы образовались - прошу помощи.
1. Почему-то 2 массив "column_arr" содержит чушь, хотя трейсы в теле процедуры вроде верные. //Этот массив, собственно, и надо уработать // Тут 2 варианта массива и переменных: покороче и подлиннее. Переместите комменты... /* var cross_arr:Array=[1,1,4,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1, 0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,1,0,0,0,6,0,4,6,6,0,0,0,0,2,0, 0,0,0,0,0,1,0,0,0,6,0,4,6,6,0,0,0,2,0,2,0,0,0,0,0,1,0,0,0,6,0,4,4,4, 4,0,5,5,0,0,0,0,0,0,0,0,0,0,0,6,0,4,0,0,0,5,5,0,0,0,0,0,0,0,0,0,0,0, 0,0,4,4,0,0,5,5,0,0,0,3,0,0,0,0,0,0,0,0,0,4,4,4,0,5,5,0,0,0,3,3,3,0, 0,0,1,0,0,0,4,4,4,4,5,5,0,0,0,3,3,3,3,3,0,0,1,0,0,4,4,4,4,4]; var h_cell:Number=20;//кол-во строк в таблице var v_cell:Number=10;//кол-во колонок (столбцов) в таблице */ var cross_arr:Array=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,4,3,3,3,0,4,4,2,3,1,1,1,2,3,1,2,2,2,0,1,0,0,0,0]; var h_cell:Number=5;//кол-во строк в таблице var v_cell:Number=10;//кол-во колонок (столбцов) в таблице var line_arr:Array=[];//2-мерный массив строк таблицы var column_arr:Array=[];//2-мерный массив столбцов таблицы trace(cross_arr.length+'\n'); createArrays(); // function createArrays(){ var tmp:Array=[]; var n:Number=0; //Заполняем массив строк for(var i=0;i< v_cell;i++){ line_arr.push(cross_arr.slice(i*h_cell,(i+1)*h_cell)); } trace('temporary array : '); /* Заполняем массив колонок и, почему-то он(массив) заполняется ПОСЛЕДНИМ значением "tmp". Хотя сам "tmp" трейсится правильно!! */ for( i=0; i< h_cell;i++){ tmp.length=0; for(var j=0; j<v_cell; j++){ n=j*h_cell+i; tmp.push(cross_arr[n]);//Пробовал //tmp.push(line_arr[j][i]);// разные варианты } trace(i+' : '+tmp); column_arr.push(tmp);//Пробовал //column_arr[i]=tmp;// разные варианты } //tracer. Смотрим результаты trace('\nline_arr[v][h]. v='+line_arr.length+' : h='+line_arr[0].length); for(i=0; i< line_arr.length; i++){trace(i+' : '+line_arr[i]);} trace('\ncolumn_arr[h][v]. h='+column_arr.length+' : v='+column_arr[0].length); for(i=0; i< column_arr.length; i++){trace(i+' : '+column_arr[i]);} trace('\ncross_arr.length='+cross_arr.length+'\n'+cross_arr); } Возможно, есть вариант решения без промежуточных 2-мерных массивов? Заранее благодарю за любой конструктивный совет! |
|
|||||
Регистрация: Sep 2006
Адрес: Moscow
Сообщений: 62
|
Попробуйте вот так: в функции createArrays() вместо tmp.length = 0
напишите tmp = []. А вообще думаю каждую строку ( и соответственно каждый столбец) лучше вносить в новый массив например для строк: , где row1, row2,..., rowN массивы соответствующих строк. Аналогично для столбцов. Как бы создаете матрицу. Про сортировку читайте в хелпе про Array.sort, Array.sortOn(). |
|
|||||
Регистрация: Dec 2002
Адрес: Живу вот где-то
Сообщений: 493
|
2 Zone71
Благодарю за помощь! Замена "tmp.length = 0" на "tmp = []" действительно сработала в процедуре прекрасно. Правда я решил проблему другим (кривым) путем, но, благодаря вам, теперь избавлюсь от излишнего цикла. Спасибо! По поводу новых массивов: да ведь именно так и делается. Т.е., применительно к вашему примеру, ваш "rows" - это мой "line_arr" и заполняется он циклично массивом "tmp", в коем, при каждой итерации, содержится новая строка или колонка. Т.е. и делается массив массивов или матрица. Фишка неразгаданная осталась во 2 вопросе моего старт топа. Если оттрейсить код, с вашим исправлением, вы увидите снимки массивов. Ну и мне , как-то, надо посчитать ненулевые значения в каждой строке и колонке. К примеру 1 строка массива "line_arr" ="0,0,0,1,2,2,2,0,0,0,1,1,0,3,2,0". А в результате имеем что-то, типа (1-1, 2-3, 1-2, 3-1, 2-1). Т.е. "значение-количество" или как-то поудобнее возможно?. |
Часовой пояс GMT +4, время: 09:51. |
|
« Предыдущая тема | Следующая тема » |
|
|