![]() |
двумерный массив
Друзья, помогите, что-то прямо творческий кризис настал :-(
Нужно упорядочить двумерный массив координат чтобы получилось так: элементы должны идти сначала по возрастанию 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.
|
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]); }; |
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]);}; сортировка :) |
так у меня массив и составляется как попало! это я для примера написал, главное - мне нужно упорядочить его по правилу, написанному в таблице.
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 = []; |
Млин!!!!! Наверное я что-то объясняю не правильно... :-( 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" ]). Извини упустил :) |
вот сделал, основываясь на примере Jlekc'а
Код:
arr = []; |
| Часовой пояс GMT +4, время: 10:33. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.