@sokira

Сортировка таблицы методом sort на чистом JavaScript или js-библиотека?

Хочу сделать простую сортировку таблицы. Числа, строки, даты.
Чтобы она срабатывала кликом по заголовку столбца.

Нужно максимально уменьшить размер подгружаемых скриптов.

Имеет сли смысл сделать сортировку на чистом JS используя метод sort(), преобразовав таблицу в массив, а после получения результата преобразовать в обратную сторону или выигрыша особого по сравнению с готовыми библиотеками не получу?

Есть крутые и большие библиотеки типа datatables и tablesorter, но мне не нужны все их возможности.
  • Вопрос задан
  • 449 просмотров
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
Лучше использовать sort(). Это нативная, а потому быстрая, функция. Своя функция, если опустить время на создание массива, будет на порядок медленнее.

Таким образом, всё упирается в копирование данных. И здесь могу посоветовать только одно: данные должны быть уже в переменных JS на момент загрузки страницы. Конечно, в самой таблице - тоже, на случай отсутствия JS у пользователя. И каждая сортировка просто формирует таблицу заново.

Ещё вариант, сделать массив непосредственно из DOM-элементов, как-то так (пример):
[...document.querySelectorAll('tr')]
А после применения sort(), можно с помощью insert'ов сделать новую таблицу или даже пушить в существующую. Здесь плюс в том, что вы не меняете оформление и формат таблицы. То есть если другой программист (или вы в будущем) добавит новый столбец, то код, вероятно, не сломается.

К слову, если у вас 100-500 элементов, а на странице редко бывает больше 500, то сортировать можно как угодно, пользователь не заметит разницы.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Берите только тот код из существующих бибилиотек, который необходим для решения Вашей задачи. (там есть нескомпилированные модули, придётся слегка понять структуру кода и правильно скопипастить)

PS: Это проще и лучше, чем Вы будете придумывать свой "велосипед" (уже имея названия реализованных библиотек с открытым кодом, проверенного годами на туче проектов)
Ответ написан
Комментировать
@M-ka
frontend присматривающийся к ror
по клику отправить запрос на сервер и обновить содержание контента респонсом..... и подобным делом обойтись в других вариантах, пагинация и тп... все с респонсов тащить сортированным и фильтрованным.
Как результат и будем, минимум кода на клиенте ибо будет заложено минимум логики. Если же рассматривать вариант на стороне клиента, то посмотреть доступные методы библиотек, что предлагают, возможно просто сменить одну на другую, у которой и размер будет меньше или же около такого же и встроено будет инструмент по подгонке таблиц или вообще данных
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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