![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2003
Сообщений: 290
|
Друзья, помогите, что-то прямо творческий кризис настал :-(
Нужно упорядочить двумерный массив координат чтобы получилось так: элементы должны идти сначала по возрастанию x, потом у... допустим: y1=-30;x1=0; y2=-30;x2=10; y3=-30;x3=20; y4=-30;x4=30; y5=-20;x5=0; y6=-20;x6=10; y7=-20;x7=20; y8=-20;x8=30; y9=-10;x9=0; y10=-10;x10=10; y11=-10;x11=20; y12=-10;x12=30; for (i=1; i<mass.length; i++) { координата x записана в массиве mass[i][0] координата y mass[i][1] } Заранее спасибо!!! Пиво с меня! ![]() |
|
|||||
|
legche sostavljat' massiv kak popalo, a potom formatirovat', 'to prosche, i v plane vesaq, i v plane skorosti.
__________________
I'm only happy when it rains. Waka Laka |
|
|||||
|
"человек"
Регистрация: Nov 2002
Адрес: +-
Сообщений: 1,807
|
for(mass=[],i=0,y=-30;y<=-10;y+=10){
for(x=0;x<=30;x+=10,i++){ mass[i]=[]; mass[i][0]=x; mass[i][1]=y; }; }; for(i2=0;i2<i;i2++){ trace(mass[i2]); };
__________________
flash it |
|
|||||
|
"человек"
Регистрация: Nov 2002
Адрес: +-
Сообщений: 1,807
|
mass_x=[12,56,48,21,36];
mass_y=[542,226,40,58,0]; mass_x.sort(function(){return(arguments[0]>arguments[1]);}); mass_y.sort(function(){return(arguments[0]>arguments[1]);}); mass=[]; for(i in mass_x){mass[i]=[mass_x[i],mass_y[i]];}; for(i=0;i<mass.length;i++){trace(mass[i]);}; сортировка ![]()
__________________
flash it |
|
|||||
|
Регистрация: Nov 2003
Сообщений: 290
|
так у меня массив и составляется как попало! это я для примера написал, главное - мне нужно упорядочить его по правилу, написанному в таблице.
Techmaker, У Вас сортируется по возрастанию mass_x и mass_y, а потом выводятся, а это же связанные значения, т.е. не должно быть в начале [12,56,48,21,36]; [542,226,40,58,0]; а потом 12,0 21,40 36,58 48,226 56,542 нужно - берем самое маленькое значение y - для него выводим по мере возрастания x (в случае наличия нескольких x с одинаковым y) - это сформировались n певых значений выходного массива дальше взяли следующее по величине значение y - для него вывели x по мере возрастания... и т.д. - посмотрите внимательно, пожалуйста, в пример который я привел! HELP!!! |
|
|||||
|
Тебе обязательно делать сортировку в AS 1, может AS2 подойдет ??
|
|
|||||
|
Я тут глянул функция 'sortOn' введена с шестёрки, так что этот сурс подойдет
arr = [];
arr[0] = {x:1, y:10};
arr[1] = {x:2, y:30};
arr[2] = {x:5, y:10};
arr[3] = {x:3, y:10};
arr[4] = {x:2, y:20};
arr[5] = {x:3, y:20};
for (var i = 0; i<arr.length; i++) {
trace('x : '+arr[i].x+' | '+'y : '+arr[i].y);
}
arr.sortOn(["x", "y"]);
trace('after');
for (var i = 0; i<arr.length; i++) {
trace('x : '+arr[i].x+' | '+'y : '+arr[i].y);
}
![]() Последний раз редактировалось Jlekc; 09.12.2003 в 20:01. |
|
|||||
|
Регистрация: Nov 2003
Сообщений: 290
|
Млин!!!!! Наверное я что-то объясняю не правильно... :-( Jlekc огромное спасибо, что пытаетесь помочь, награда будет, но
у Вас: x : 1 | y : 10 x : 2 | y : 30 x : 5 | y : 10 x : 3 | y : 10 x : 2 | y : 20 x : 3 | y : 20 after x : 1 | y : 10 x : 3 | y : 20 x : 2 | y : 20 x : 3 | y : 10 x : 5 | y : 10 x : 2 | y : 30 а мне нужно: after x : 1 | y : 10 x : 3 | y : 10 x : 5 | y : 10 x : 2 | y : 20 x : 3 | y : 20 x : 2 | y : 30 Видите в чем разница? Сначала для наименьшего y(10) перебираются по-возрастанию все x(1,3,5), потом для следующего по величине y(20) - все x по возрастанию(2,3), затем для следующего y(30) и т.д. Я уже голову сломал - никак не получается ![]() |
|
|||||
|
посмотри в синтаксис 'sortOn', можно делать сортировку по любому элементу. Я написал sortOn([ "x" , "y" ]) как общий пример.
А тебе надо sortOn([ "y", "x" ]). Извини упустил ![]() |
|
|||||
|
"человек"
Регистрация: Nov 2002
Адрес: +-
Сообщений: 1,807
|
вот сделал, основываясь на примере Jlekc'а
arr = [];
arr[0] = {x:1, y:10};
arr[1] = {x:2, y:30};
arr[2] = {x:5, y:10};
arr[3] = {x:3, y:10};
arr[4] = {x:2, y:20};
arr[5] = {x:3, y:20};
for (var i = 0; i<arr.length; i++) {
trace('x : '+arr[i].x+' | '+'y : '+arr[i].y);
}
arr.sort(function(){return(arguments[0].y>arguments[1].y)});
trace('after');
for (var i = 0; i<arr.length; i++) {
trace('x : '+arr[i].x+' | '+'y : '+arr[i].y);
}
__________________
flash it |
![]() |
Часовой пояс GMT +4, время: 10:07. |
|
|
« Предыдущая тема | Следующая тема » |
|
|