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

Snipe 19.08.2008 08:38

А в JS же есть сортировка у массивов.
Цитата:

sort(compareFunction)
compareFunction
Специфицирует функцию, определяющую порядок сортировки. Если отсутствует, массив сортируется лексикографически (в словарном порядке) в соответствии с конвертацией в строку каждого элемента.
Или велосипедоизобретательств ом занимаетесь или я чего-то не понял? =/

Андрей Параничев 19.08.2008 13:38

Snipe,
Так у массивов же, а тут DOMNodeList.

Infocatcher 20.08.2008 03:24

Цитата:

Сообщение от Андрей Параничев (Сообщение 4732)
Так у массивов же, а тут DOMNodeList.

Не писать же функцию сортировки вручную :D – есть же Array.sort. Его и помучаем:
var ul = document.getElementById("ul-1");
var lis = ul.getElementsByTagName("li"), li, h;
var map = {}, arr = [];
for(var i = 0, len = lis.length; i < len; i++) {
    li = lis[i];
    h = li.textContent || li.innerText; // превед, IE!
    if(!map[h]) // на случай повторяющихся значений h
        map[h] = [li]; // соответствие h => li
    else
        map[h].push(li);
    arr.push(h);
}
arr.sort(); // сортируем массив из h
if(ul._reverse)
	arr.reverse();
ul._reverse = !ul._reverse;
for(var i = 0; i < len; i++) // arr[i] => h => map[h] => li
    ul.appendChild(map[arr[i]].shift());


P.S. Старые версии IE будут нехило ругаться...


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