Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сортировка двумерного массива по алфавиту (https://javascript.ru/forum/misc/51714-sortirovka-dvumernogo-massiva-po-alfavitu.html)

Live it 17.11.2014 09:13

Сортировка двумерного массива по алфавиту
 
Здравствуйте, проблема такая: есть двумерный массив, который заполняется так
for(i=1; i < table.rows.length; i++) {
a[i-1] = new Array();
a[i-1][0]=
table.rows[i].getElementsByTagName("td").item(col_sort_num).inn erHTML;
a[i-1][1]=table.rows[i];
}
после пытаюсь отсортировать его стандартным методом
a.sort(function(a,b){if (a[0] > b[0]) return 1;
else if (a[0] < b[0]) return -1;
else return 0;});
но сортирует как попало, что делаю не так?

ksa 17.11.2014 09:17

Цитата:

Сообщение от Live it
что делаю не так?

Просто посмотри, что в a[0] и b[0], может это тебе все и прояснит...

Live it 17.11.2014 09:33

по идее в a[0] лежит элемент массива a[i][j], но как мне тогда сделать, чтобы сортировка проходила по столбцу наименование данной строки??

ksa 17.11.2014 13:12

Цитата:

Сообщение от Live it
по идее в a[0] лежит элемент массива a[i][j]

По чьей идее? :)
В a[0] находится весь массив, а не какой-то его элемент...

Цитата:

Сообщение от Live it
как мне тогда сделать, чтобы сортировка проходила по столбцу наименование данной строки?

Таки правильно взять "ключевые выражения" для сортировки.

Пример полный сделай - тебе на нем и покажут... ;)

Live it 17.11.2014 14:21

вот полностью вся функция:
function sortNaim(el) {
var col_sort = el.innerHTML;
var tr = el.parentNode;
var table = tr.parentNode;
var a = new Array();
for(i=1; i < table.rows.length; i++) {
a[i-1] = new Array();
a[i-1][0]=table.rows[i].getElementsByTagName("td").item(2).innerHTML;
a[i-1][1]=table.rows[i];
}
a.sort(function(a,b){
if (a[0] > b[0]) return 1;
else if (a[0] < b[0]) return -1;
else return 0;
});
a.reverse();
for(i=0; i < a.length; i++)
table.appendChild(a[i][1]);
}


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