Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.09.2009, 17:15
Интересующийся
Отправить личное сообщение для Ferroks Посмотреть профиль Найти все сообщения от Ferroks
 
Регистрация: 09.09.2009
Сообщений: 25

Сортировка массива
есть массив

map=[[15,15,0,0],[23,15,0,1],[17,15,0,2],[45,15,0,3],[19,15,0,4],[20,15,0,5],[21,15,0,6],[22,15,0,7],[15,16,0,8],[20,16,0,9],[17,16,0,10]]

надо отсортировать массив чтоб получилось так

map=[[15,15,0,0],[16,15,0,1],[17,15,0,2],[18,15,0,3],[19,15,0,4],[20,15,0,5],[21,15,0,6],[22,15,0,7],[15,16,0,8],[16,16,0,9],[17,16,0,10]]


Код:
map=[[15,15,0,0],[16,15,0,1],[17,15,0,2],[18,15,0,3],[19,15,0,4],[20,15,0,5],[21,15,0,6],[22,15,0,7],[15,16,0,8],[16,16,0,9],[17,16,0,10],[18,16,0,11],[19,16,0,12],[20,16,0,13],[21,16,0,14],[22,16,0,15],[15,17,0,16],[16,17,0,17],[17,17,0,18],[18,17,0,19],[19,17,0,20],[20,17,0,21],[21,17,0,22],[22,17,1012,23],[15,18,0,24],[16,18,0,25],[17,18,0,26],[18,18,0,27],[19,18,0,28],[20,18,0,29],[21,18,0,30],[22,18,0,31],[15,19,0,32],[16,19,0,33],[17,19,0,34],[18,19,0,35],[19,19,0,36],[20,19,0,37],[21,19,1014,38],[22,19,0,39],[15,20,0,40],[16,20,1045,41],[17,20,0,42],[18,20,0,43],[19,20,0,44],[20,20,0,45],[21,20,0,46],[22,20,1013,47],[15,21,0,48],[16,21,0,49],[17,21,1012,50],[18,21,0,51],[19,21,0,52],[20,21,1045,53],[21,21,0,54],[22,21,1009,55],[15,22,0,56],[16,22,0,57],[17,22,0,58],[18,22,1045,59],[19,22,1011,60],[20,22,0,61],[21,22,0,62],[22,22,0,63],[15,23,0,64],[16,23,0,65],[17,23,0,66],[18,23,0,67],[19,23,0,68],[20,23,0,69],[21,23,0,70],[22,23,0,71],[15,24,0,72],[16,24,0,73],[17,24,0,74],[18,24,0,75],[19,24,0,76],[20,24,1014,77],[21,24,0,78],[22,24,0,79],[15,25,0,80],[16,25,0,81],[17,25,0,82],[18,25,0,83],[19,25,0,84],[20,25,1013,85],[21,25,0,86],[22,25,1064,87],[15,26,0,88],[16,26,0,89],[17,26,0,90],[18,26,0,91],[19,26,0,92],[20,26,0,93],[21,26,0,94],[22,26,0,95],[15,27,0,96],[16,27,0,97],[17,27,0,98],[18,27,0,99],[19,27,0,100],[20,27,0,101],[21,27,1045,102],[22,27,0,103],[15,28,0,104],[16,28,0,105],[17,28,0,106],[18,28,0,107],[19,28,0,108],[20,28,0,109],[21,28,0,110],[22,28,0,111],[15,29,0,112],[16,29,0,113],[17,29,0,114],[18,29,0,115],[19,29,0,116],[20,29,0,117],[21,29,0,118],[22,29,0,119],[15,30,0,120],[16,30,0,121],[17,30,1067,122],[18,30,0,123],[19,30,0,124],[20,30,0,125],[21,30,0,126],[22,30,0,127],[15,31,0,128],[16,31,0,129],[17,31,0,130],[18,31,0,131],[19,31,0,132],[20,31,0,133],[21,31,0,134],[22,31,0,135],[15,32,1028,136],[16,32,0,137],[17,32,0,138],[18,32,0,139],[19,32,0,140],[20,32,0,141],[21,32,0,142],[22,32,0,143],[19,19,0,0],[20,19,0,1],[21,19,1014,2],[22,19,0,3],[23,19,0,4],[24,19,0,5],[25,19,0,6],[26,19,0,7],[19,20,0,8],[20,20,0,9],[21,20,0,10],[22,20,1013,11],[23,20,1014,12],[24,20,0,13],[25,20,0,14],[26,20,0,15],[19,21,0,16],[20,21,1045,17],[21,21,0,18],[22,21,1009,19],[23,21,0,20],[24,21,1014,21],[25,21,0,22],[26,21,0,23],[19,22,1011,24],[20,22,0,25],[21,22,0,26],[22,22,0,27],[23,22,0,28],[24,22,1013,29],[25,22,1014,30],[26,22,0,31],[19,23,0,32],[20,23,0,33],[21,23,0,34],[22,23,0,35],[23,23,0,36],[24,23,0,37],[25,23,0,38],[26,23,0,39],[19,24,0,40],[20,24,1014,41],[21,24,0,42],[22,24,0,43],[23,24,0,44],[24,24,1012,45],[25,24,1013,46],[26,24,0,47],[19,25,0,48],[20,25,1013,49],[21,25,0,50],[22,25,1064,51],[23,25,0,52],[24,25,0,53],[25,25,0,54],[26,25,0,55],[19,26,0,56],[20,26,0,57],[21,26,0,58],[22,26,0,59],[23,26,1044,60],[24,26,0,61],[25,26,0,62],[26,26,0,63],[19,27,0,64],[20,27,0,65],[21,27,1045,66],[22,27,0,67],[23,27,0,68],[24,27,0,69],[25,27,0,70],[26,27,0,71],[19,28,0,72],[20,28,0,73],[21,28,0,74],[22,28,0,75],[23,28,0,76],[24,28,1011,77],[25,28,0,78],[26,28,0,79],[19,29,0,80],[20,29,0,81],[21,29,0,82],[22,29,0,83],[23,29,0,84],[24,29,1045,85],[25,29,0,86],[26,29,0,87],[19,30,0,88],[20,30,0,89],[21,30,0,90],[22,30,0,91],[23,30,1012,92],[24,30,0,93],[25,30,1021,94],[26,30,0,95],[19,31,0,96],[20,31,0,97],[21,31,0,98],[22,31,0,99],[23,31,0,100],[24,31,0,101],[25,31,0,102],[26,31,0,103],[19,32,0,104],[20,32,0,105],[21,32,0,106],[22,32,0,107],[23,32,0,108],[24,32,0,109],[25,32,0,110],[26,32,0,111],[19,33,0,112],[20,33,0,113],[21,33,0,114],[22,33,0,115],[23,33,1045,116],[24,33,0,117],[25,33,0,118],[26,33,0,119],[19,34,0,120],[20,34,0,121],[21,34,0,122],[22,34,0,123],[23,34,0,124],[24,34,0,125],[25,34,0,126],[26,34,0,127],[19,35,0,128],[20,35,0,129],[21,35,0,130],[22,35,0,131],[23,35,0,132],[24,35,0,133],[25,35,0,134],[26,35,0,135],[19,36,0,136],[20,36,0,137],[21,36,0,138],[22,36,0,139],[23,36,0,140],[24,36,1045,141],[25,36,0,142],[26,36,0,143],[19,13,0,0],[20,13,0,1],[21,13,0,2],[22,13,0,3],[23,13,0,4],[24,13,0,5],[25,13,0,6],[26,13,0,7],[19,14,0,8],[20,14,0,9],[21,14,0,10],[22,14,0,11],[23,14,0,12],[24,14,0,13],[25,14,0,14],[26,14,0,15],[19,15,0,16],[20,15,0,17],[21,15,0,18],[22,15,0,19],[23,15,0,20],[24,15,0,21],[25,15,0,22],[26,15,0,23],[19,16,0,24],[20,16,0,25],[21,16,0,26],[22,16,0,27],[23,16,0,28],[24,16,0,29],[25,16,0,30],[26,16,0,31],[19,17,0,32],[20,17,0,33],[21,17,0,34],[22,17,1012,35],[23,17,0,36],[24,17,0,37],[25,17,0,38],[26,17,0,39],[19,18,0,40],[20,18,0,41],[21,18,0,42],[22,18,0,43],[23,18,0,44],[24,18,0,45],[25,18,0,46],[26,18,0,47],[19,19,0,48],[20,19,0,49],[21,19,1014,50],[22,19,0,51],[23,19,0,52],[24,19,0,53],[25,19,0,54],[26,19,0,55],[19,20,0,56],[20,20,0,57],[21,20,0,58],[22,20,1013,59],[23,20,1014,60],[24,20,0,61],[25,20,0,62],[26,20,0,63],[19,21,0,64],[20,21,1045,65],[21,21,0,66],[22,21,1009,67],[23,21,0,68],[24,21,1014,69],[25,21,0,70],[26,21,0,71],[19,22,1011,72],[20,22,0,73],[21,22,0,74],[22,22,0,75],[23,22,0,76],[24,22,1013,77],[25,22,1014,78],[26,22,0,79],[19,23,0,80],[20,23,0,81],[21,23,0,82],[22,23,0,83],[23,23,0,84],[24,23,0,85],[25,23,0,86],[26,23,0,87],[19,24,0,88],[20,24,1014,89],[21,24,0,90],[22,24,0,91],[23,24,0,92],[24,24,1012,93],[25,24,1013,94],[26,24,0,95],[19,25,0,96],[20,25,1013,97],[21,25,0,98],[22,25,1064,99],[23,25,0,100],[24,25,0,101],[25,25,0,102],[26,25,0,103],[19,26,0,104],[20,26,0,105],[21,26,0,106],[22,26,0,107],[23,26,1044,108],[24,26,0,109],[25,26,0,110],[26,26,0,111],[19,27,0,112],[20,27,0,113],[21,27,1045,114],[22,27,0,115],[23,27,0,116],[24,27,0,117],[25,27,0,118],[26,27,0,119],[19,28,0,120],[20,28,0,121],[21,28,0,122],[22,28,0,123],[23,28,0,124],[24,28,1011,125],[25,28,0,126],[26,28,0,127],[19,29,0,128],[20,29,0,129],[21,29,0,130],[22,29,0,131],[23,29,0,132],[24,29,1045,133],[25,29,0,134],[26,29,0,135],[19,30,0,136],[20,30,0,137],[21,30,0,138],[22,30,0,139],[23,30,1012,140],[24,30,0,141],[25,30,1021,142]]



function vozrast(i, ii) { // По возрасту (возрастание)
if (i[1] > ii[1])
return 1;
else if (i[1] < ii[1])
return -1;
else
return 0;
}

map.sort(vozrast(i,ii));

for(e=0;e<=map.length;e++) 
{
map2 = new Array();
map3 = new Array();
j=0;
if (map[e][1]=== map[e+1][1])
{
map2.push(map[e])
}
if (map[e][1] !== map[e+1][1])
{
map2.sort(vozrast(i,ii))
map3.concat(map2)
}
alert(map3[0]);
}



document.write(map3);
чето не получается у меня.

подскажите где я ошибся!

Последний раз редактировалось Ferroks, 15.09.2009 в 17:24.
Ответить с цитированием
  #2 (permalink)  
Старый 15.09.2009, 17:45
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Плохой пример какой-то в начале, толком не ясен критерий. Сорт по элементам в "цифро-лингвистическом", так сказать, порядке? Так?
map.sort(function(a, b){
    for ( var i=0; i<a.length; i++ ) if (a[i] < b[i]) return -1; else if (a[i] > b[i]) return 1;
    return 0;
})

Последний раз редактировалось e1f, 15.09.2009 в 17:46. Причина: ошибок много
Ответить с цитированием
  #3 (permalink)  
Старый 15.09.2009, 18:11
Интересующийся
Отправить личное сообщение для Ferroks Посмотреть профиль Найти все сообщения от Ferroks
 
Регистрация: 09.09.2009
Сообщений: 25

уже разобрался

function vozrast(i, ii) { // По возрасту (возрастание)
	if (i[1] > ii[1])
		return 1;
	else if (i[1] < ii[1])
		return -1;
	else
	return 0;
}


var map=[[15,15,0,0],[23,15,0,1],[17,15,0,2],[45,15,0,3],[19,15,0,4],[20,15,0,5],[21,15,0,6],[22,15,0,7],[15,16,0,8],[20,16,0,9],[17,16,0,10]]

document.write(map.sort(vozrast));


до этого почему то не получалось
Ответить с цитированием
  #4 (permalink)  
Старый 15.09.2009, 18:13
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Ну и? Сортает-то у Вас только по первому элементу массива. Или так и надо?
Ответить с цитированием
  #5 (permalink)  
Старый 15.09.2009, 18:35
Интересующийся
Отправить личное сообщение для Ferroks Посмотреть профиль Найти все сообщения от Ferroks
 
Регистрация: 09.09.2009
Сообщений: 25

да, как и надо.

сначало по второму, потом по первому.
Ответить с цитированием
  #6 (permalink)  
Старый 18.09.2009, 09:32
Интересующийся
Отправить личное сообщение для Ferroks Посмотреть профиль Найти все сообщения от Ferroks
 
Регистрация: 09.09.2009
Сообщений: 25

щас только заметил, не правильно он сортирует.
Ответить с цитированием
  #7 (permalink)  
Старый 18.09.2009, 14:15
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Вот-вот, и я о том же Так все же, как правильно Вам надо? По нулевому элементу, потом по первому, второму и т.д.?
Ответить с цитированием
  #8 (permalink)  
Старый 29.09.2009, 13:13
Интересующийся
Отправить личное сообщение для Ferroks Посмотреть профиль Найти все сообщения от Ferroks
 
Регистрация: 09.09.2009
Сообщений: 25

надо сначала по первому, потом по нулевому
Ответить с цитированием
  #9 (permalink)  
Старый 29.09.2009, 13:47
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

map.sort(function(a, b){
    for (var i=1; i--; ) {
        if (a[i] < b[i]) return -1; 
        else if (a[i] > b[i]) return 1;
    }
    return 0;
})
Ответить с цитированием
  #10 (permalink)  
Старый 29.09.2009, 14:00
Интересующийся
Отправить личное сообщение для Ferroks Посмотреть профиль Найти все сообщения от Ferroks
 
Регистрация: 09.09.2009
Сообщений: 25

не так работает.
массив map=[[6,16,0,0],[7,16,0,1],[8,16,0,2],[13,16,0,7],[10,16,0,4],[11,16,0,5],[12,16,0,6],[9,16,0,3],[8,17,0,10],[10,17,0,12],[7,17,0,9],[9,17,0,11]]

отсортировать чтоб получился [6,16,0,0],[7,16,0,1],[8,16,0,2],[9,16,0,7],[10,16,0,4],[11,16,0,5],[12,16,0,6],[13,16,0,3],[7,17,0,9],[8,17,0,10],[9,17,0,11],[10,17,0,12]
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
есть ли стандартная функция вывода сожержимого массива что то вроди print_r в PHP??? mazovski Events/DOM/Window 4 20.08.2009 12:52
Как сформировать строку из массива di@mond Я не знаю javascript 9 11.06.2009 17:35
Просмотр массива Igor Я не знаю javascript 10 21.05.2009 17:03
Можно ли как для произвольного массива создавать вызовы функций , имеющих на входе kefi Общие вопросы Javascript 3 17.04.2009 16:53
вставка элементов массива в текстовую форму по клику olezyk Общие вопросы Javascript 3 21.03.2009 22:01