一尘不染

按值对JSON排序

json

我有一个非常简单的JSON对象,如下所示:

{
   "people":[
      {
         "f_name":"john",
         "l_name":"doe",
         "sequence":"0",
         "title":"president",
         "url":"google.com",
         "color":"333333"
      },
      {
         "f_name":"michael",
         "l_name":"goodyear",
         "sequence":"0",
         "title":"general manager",
         "url":"google.com",
         "color":"333333"
      }
   ]
}

现在,这是从服务器端代码返回的,我运行jQuery.each以形成必要的html并输出结果。

现在我正在做的是向包含我的排序信息的服务器发送AJAX调用,例如“标题DESC”,然后重新运行SQL查询以返回新的结果集。但是我想避免这种情况,并使用jQuery对生成的JSON进行排序,以防止往返服务器和多个数据库访问。

如何使用jQuery实现此目标?


阅读 225

收藏
2020-07-27

共1个答案

一尘不染

jQuery对于排序并不是特别有用,但是这是一个优雅而有效的解决方案。只需编写一个简单的JS函数即可,该函数采用属性名称和顺序(升序或降序),并使用简单的比较函数调用本机sort()方法:

var people = [
    {
        "f_name": "john",
        "l_name": "doe",
        "sequence": "0",
        "title" : "president",
        "url" : "google.com",
        "color" : "333333",
    }
    // etc
];

function sortResults(prop, asc) {
    people.sort(function(a, b) {
        if (asc) {
            return (a[prop] > b[prop]) ? 1 : ((a[prop] < b[prop]) ? -1 : 0);
        } else {
            return (b[prop] > a[prop]) ? 1 : ((b[prop] < a[prop]) ? -1 : 0);
        }
    });
    renderResults();
}

然后:

sortResults('l_name', true);

在这里播放一个工作示例。

2020-07-27