@Torna

Какой алгоритм использовать для ускорения сортировки div'ов?

Скажите, кто знает, какой лучше всего подойдет алгоритм для сортировки. около 2 тысяч div'ов.
И желательно приведите пример не с массивом, а именно с div.
Дело в том, что стандартный алгоритм сравнения приводит к зависанию страницы на секунд 8.
var result_sort = false;
$('.hotel-list').on('click','#sort-price',function()
{
   var sorted = $('.hotel-list-item').sort(function(a,b)
   {
	return (result_sort == (convertToNumber($(a).find('#price').html()) < convertToNumber($(b).find('#price').html()))) ? 1 : -1;
   });						
       result_sort = result_sort ? false : true;
      $('.hotel-list-cn').html(sorted);
});

var convertToNumber = function(value)
{
     return parseFloat(value);
}
  • Вопрос задан
  • 260 просмотров
Решения вопроса 1
@Aves
Нативная сортировка самый оптимальный вариант. Проблема не в ней, и не в 2000 дивов, а в том, что функция сравнения выполняется порядка 20 000 раз, и в ней работа с dom
convertToNumber($(a).find('#price').html()) < convertToNumber($(b).find('#price').html()))

Этот convertToNumber нужно сделать один раз при создании массива, это сразу на порядок сократит время сортировки.
пример на jsbin
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Sanasol
@Sanasol Куратор тега JavaScript
нельзя просто так взять и загуглить ошибку
Да страница от 2000 дивов и без сортировки загибаться будет.
Нужно делать нормально страницу, а не искать алгоритм.

И сортировать данные(массив), а не распарсивать всю страницу, да еще и огромным количеством find.

8 секунд это у вас еще наверно компьютер хороший, а что-нибудь постарее вообще не отвиснет.
Ответ написан
savostin
@savostin
Еще один программист
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы