Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Сортировка много мерного массива по различным полям (https://javascript.ru/forum/events/54544-sortirovka-mnogo-mernogo-massiva-po-razlichnym-polyam.html)

Telnet 21.03.2015 23:21

Сортировка много мерного массива по различным полям
 
Всем привет.
Есть массив массивов дат, строк и чисел мне его нужно отсортировать по различным полям по возрастанию или по убыванию в зависимости от действий пользователя

массив примерно такой
5 2015-03-18 09:53:33 Вася
1 2015-03-21 17:30:00 Петя
9 2015-03-18 15:57:33 Вася
7 2015-03-19 18:53:16 Вася
8 2015-03-18 09:16:00 Петя
3 2015-03-19 18:53:04 Петя
4 2015-03-18 16:00:40 Вася
5 2015-03-18 16:01:46 Петя
6 2015-03-18 16:48:52 Игорь
10 2015-03-21 10:52:41 Юра

рони 21.03.2015 23:43

Telnet,
http://javascript.ru/forum/misc/3528...tml#post231976

Telnet 22.03.2015 01:19

Сделал может кому пригодится
// Функции сортировки по id 
function sIdAsc(a, b) {
    if (a[0] > b[0]) return 1;
    else if (a[0] < b[0]) return -1; else return 0;
}
function sIdDesc(a, b) {
    if (a[0] < b[0]) return 1;
    else if (a[0] > b[0]) return -1; else return 0;
}
// Функции сортировки по дате
function sDateAsc(a, b) {
    if (a[1] > b[1]) return 1;
    else if (a[1] < b[1]) return -1;
    else return 0;
}
function sDateDesc(a, b) {
    if (a[1] < b[1]) return 1;
    else if (a[1] > b[1]) return -1;
    else return 0;
}
// Функции сортировки по имени
function sNameAsc(a, b) {
    if (a[2] > b[2]) return 1;
    else if (a[2] < b[2]) return -1;
    else return 0;
}
function sNameDesc(a, b) {
    if (a[2] < b[2]) return 1;
    else if (a[2] > b[2]) return -1;
    else return 0;
}
console.log('Фильт по id убывание');
sorting.sort(sIdAsc);
console.log(sorting.join('\n'));
console.log('Фильт по Date убывание');
sorting.sort(sDateAsc);
console.log(sorting.join('\n'));
console.log('Фильт по Name убывание');
sorting.sort(sNameAsc);
console.log(sorting.join('\n'));
console.log('Фильт по id возрастание');
sorting.sort(sIdDesc);
console.log(sorting.join('\n'));
console.log('Фильт по Date возрастание');
sorting.sort(sDateDesc);
console.log(sorting.join('\n'));
console.log('Фильт по Name возрастание');
sorting.sort(sNameDesc);
console.log(sorting.join('\n'));
console.log('------------------------');

То что имеем на выходе

Изначальный массив
53,2015-03-18 09:53:33,Super User
63,2015-03-21 17:30:00,Super User
53,2015-03-18 09:53:33,Super User
62,2015-03-21 10:52:41,test
56,2015-03-18 15:57:33,Super User
61,2015-03-19 18:53:16,Super User
51,2015-03-18 09:16:00,Super User
60,2015-03-19 18:53:04,Super User
57,2015-03-18 16:00:40,Super User
58,2015-03-18 16:01:46,Super User
59,2015-03-18 16:48:52,Super User
Фильт по id убывание
51,2015-03-18 09:16:00,Super User
53,2015-03-18 09:53:33,Super User
53,2015-03-18 09:53:33,Super User
56,2015-03-18 15:57:33,Super User
57,2015-03-18 16:00:40,Super User
58,2015-03-18 16:01:46,Super User
59,2015-03-18 16:48:52,Super User
60,2015-03-19 18:53:04,Super User
61,2015-03-19 18:53:16,Super User
62,2015-03-21 10:52:41,test
63,2015-03-21 17:30:00,Super User
Фильт по Date убывание
51,2015-03-18 09:16:00,Super User
53,2015-03-18 09:53:33,Super User
53,2015-03-18 09:53:33,Super User
56,2015-03-18 15:57:33,Super User
57,2015-03-18 16:00:40,Super User
58,2015-03-18 16:01:46,Super User
59,2015-03-18 16:48:52,Super User
60,2015-03-19 18:53:04,Super User
61,2015-03-19 18:53:16,Super User
62,2015-03-21 10:52:41,test
63,2015-03-21 17:30:00,Super User
Фильт по Name убывание
58,2015-03-18 16:01:46,Super User
51,2015-03-18 09:16:00,Super User
53,2015-03-18 09:53:33,Super User
56,2015-03-18 15:57:33,Super User
57,2015-03-18 16:00:40,Super User
53,2015-03-18 09:53:33,Super User
59,2015-03-18 16:48:52,Super User
60,2015-03-19 18:53:04,Super User
61,2015-03-19 18:53:16,Super User
63,2015-03-21 17:30:00,Super User
62,2015-03-21 10:52:41,test
Фильт по id возрастание
63,2015-03-21 17:30:00,Super User
62,2015-03-21 10:52:41,test
61,2015-03-19 18:53:16,Super User
60,2015-03-19 18:53:04,Super User
59,2015-03-18 16:48:52,Super User
58,2015-03-18 16:01:46,Super User
57,2015-03-18 16:00:40,Super User
56,2015-03-18 15:57:33,Super User
53,2015-03-18 09:53:33,Super User
53,2015-03-18 09:53:33,Super User
51,2015-03-18 09:16:00,Super User
Фильт по Date возрастание
63,2015-03-21 17:30:00,Super User
62,2015-03-21 10:52:41,test
61,2015-03-19 18:53:16,Super User
60,2015-03-19 18:53:04,Super User
59,2015-03-18 16:48:52,Super User
58,2015-03-18 16:01:46,Super User
57,2015-03-18 16:00:40,Super User
56,2015-03-18 15:57:33,Super User
53,2015-03-18 09:53:33,Super User
53,2015-03-18 09:53:33,Super User
51,2015-03-18 09:16:00,Super User
Фильт по Name возрастание
62,2015-03-21 10:52:41,test
58,2015-03-18 16:01:46,Super User
61,2015-03-19 18:53:16,Super User
60,2015-03-19 18:53:04,Super User
59,2015-03-18 16:48:52,Super User
63,2015-03-21 17:30:00,Super User
57,2015-03-18 16:00:40,Super User
56,2015-03-18 15:57:33,Super User
53,2015-03-18 09:53:33,Super User
53,2015-03-18 09:53:33,Super User
51,2015-03-18 09:16:00,Super User
------------------------

рони 22.03.2015 01:39

Telnet,
чем решение по ссылке во втором посте не понравилось?

рони 22.03.2015 01:56

Telnet,
заменил массив в примере на ваш
смотреть тамже
http://javascript.ru/forum/misc/3528...tml#post231976


Часовой пояс GMT +3, время: 13:01.