Как сделать обратную сортировку по клику JS/jQuery
Есть код, который сортирует таблицу, по нажатию на кнопку необходимо чтобы сортировка была обратной, как это можно сделать?
$(function () {
var a_sort = $('#sorting span');
var div_conteiner = jQuery.makeArray($('#conteiner div'));
a_sort.each(function (index, self) {
var id = $(self).parent().attr("id");
$(self).click(function (e) {
e.preventDefault();
div_conteiner.sort(function f(a, b) {
a = $(a).data(id);
b = $(b).data(id);
var c = 0
if (a > b) c = 1;
if (a < b) c = -1;
return c
});
if (index%2) div_conteiner.reverse()
$.map(div_conteiner, function (div) {
$(div).appendTo($('#conteiner'))
});
});
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<div id="sorting">
<a href="#" id="price"><span>цена ▲</span></a>
<a href="#" id="name"><span>название ▲</span></a>
<a href="#" id="rating"><span>рейтинг ▲</span></a>
</div>
<div id="conteiner">
<div data-price="200" data-name="b" data-rating="4">Text 2 price_200 name_b rating_4</div>
<div data-price="100" data-name="c" data-rating="5">Text 1 price_100 name_c rating_5</div>
<div data-price="300" data-name="a" data-rating="3">Text 3 price_300 name_a rating_3</div>
</div>
Ответы (1 шт):
Автор решения: Vasily
→ Ссылка
Достаточно просто добавить обратную настройку к методу Array.prototype.sort(), который Вы уже и так используете:
let numbers = [4, 2, 5, 1, 3]
numbers.sort((a, b) => a - b)
console.log(numbers) // [1, 2, 3, 4, 5]
numbers.sort((a, b) => b - a)
console.log(numbers) // [5, 4, 3, 2, 1]