我想命令后代我的表,所以我有这个功能上升:
var compareUser = function (a, b) {
if (a.username < b.username) {
return -1;
}
else if (a.username > b.username) {
return 1;
}
return 0;
};
如何修改它以包含后代/上升函数?
这就是我调用函数的方式:
$(".theadUser").on('click', function () {
userData.sort(compareUser);
$('.theadUser').removeClass('headerUnSorted');
$('.theadUser').addClass('headerAsc');
console.log(userData);
$("#users").html('');
buildTable();
});
我希望当我先点击按钮来命令上升时,当我再次点击命令后代时。
答案 0 :(得分:2)
考虑一个可用于创建“反向”比较函数的函数:
function reverseCompare (fn) {
return function (a, b) {
// call original, reverse result
return fn(a, b) * -1;
// alternative as suggested by Alnitak, reverse arguments
// return fn(b, a)
}
}
在基本形式中,它可以像这样使用:
userData.sort(compareUser); // ascending/normal
userData.sort(reverseCompare(compareUser)); // descending/reversed
应用于代码,它可能是这样的:
var $t = $('.theadUser');
var sortedAsc = $t.hasClass('headerAsc');
if (!sortedAsc) {
// not current sorted ascending, sort ascending
userData.sort(compareUser);
$t.removeClass('headerUnSorted headerDesc')
.addClass('headerAsc');
} else {
userData.sort(reverseCompare(compareUser));
$t.removeClass('headerUnSorted headerAsc')
.addClass('headerDesc');
}