@Artemio95

Можно ли сделать сортировку через computed, если сортировок несколько?

Есть такой вариант сортировки, но она сортирует только в одну сторону 1 раз, при повторном клике мы передаём то же самое
Есть такой вариант, неплохой, но здесь реализовано через методы и при новом клике просто ревёрсит
Также есть вариант с флагом, типа рисуем какой-то computed, возвращаем отсортированный массив, в зависимости от флага меняет порядок сортировки. Но флаг один, т.е. это подходит, если сортировка одна.

Как сделать сортировку через computed, если надо сортировать несколько столбцов таблицы?
  • Вопрос задан
  • 176 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
Можно.

Добавляем в компонент свойство - массив объектов, которые будут содержать в себе столбец, по которому надо сортировать, и направление сортировки.

Когда пользователь кликает по заголовку столбца, проверяем, есть ли этот столбец в массиве. Если нет - добавляем с порядком сортировки по возрастанию. Если есть и порядок сортировки по возрастанию - делаем порядок сортировки по убыванию. Есть и порядок сортировки по убыванию - удаляем.

Собственно сортировка (функция сравнения элементов): обходим массив и сравниваем значения соответствующих свойств у переданных элементов; как только попадаются неравные - возвращаем результат, не забыв его умножить на +/- 1, в зависимости от направления сортировки.

https://jsfiddle.net/yp8nhLe5/1/
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы