javascript - 第二次单击时反向排序 - Javascript

标签 javascript json sorting click reverse

我有一个函数,可以在单击链接后对 json 数组进行排序(因此使用 onclick 调用该函数)并且该函数可以工作并且可以排序:

function sortArch(a,b) {
x = eval("a." + sort_type).toLowerCase();  
y = eval("b." + sort_type).toLowerCase();  
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}

当我单击同一个按钮时,我希望该功能进行反向排序。逆转很容易:

x = eval("a." + sort_type).toLowerCase();  
y = eval("b." + sort_type).toLowerCase();  
return ((x < y) ? 1 : ((x > y) ? -1 : 0));

我的问题是让函数知道它需要哪种排序方式。我正在考虑使用 bool 标志,但我似乎想不出任何有效的方法。我只是在寻找一种方法来跟踪它的排序方式,然后如果单击该按钮,它将使用第二个代码片段。 提前致谢!

最佳答案

你可以这样做:

function mySort(desc) {
  var mod = desc ? -1 : 1;
  return function(a,b) {
    var lca = a[sort_type].toLowerCase(), 
        lcb = b[sort_type].toLowerCase();
    return lca > lcb ? 1 * mod : lca < lcb -1 * mod : 0;
  }
}

arr.sort(mySort(true)); //sort descending
arr.sort(mySort(false)); //sort ascending

顺便说一句:不必要时尽量不要使用 eval,它既慢又乱

关于javascript - 第二次单击时反向排序 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5676974/

相关文章:

linux - 想使用排序命令在此时间戳 2019-06-29T12 :39:23. 428Z 上对我的日志文件进行排序,但由于有多个定界符而感到困惑

javascript - 如何使用 javascript/jquery 对 cookie 进行编码?

javascript - 数组返回 0 的长度,尽管它有值

javascript - sinon 没有正确恢复 stub 原型(prototype)方法?

javascript - 查询/JavaScript : Replace html content with html tag

javascript - 使用 Google 表格创建嵌套 JSON 对象

java - 如何配置 Genson 来反序列化日期?

php - 如何在 MySQL 中进行自然排序

arrays - 如何在 F# 中按字母顺序对字符串进行排序?

javascript - 如何在链接( anchor 标记)旁边使用 CSS 添加插入符号(向下)?