我有一个非常简单的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并输出结果。
jQuery.each
现在我正在做的是向包含我的排序信息的服务器发送AJAX调用,例如“标题DESC”,然后重新运行SQL查询以返回新的结果集。但是我想避免这种情况,并使用jQuery对生成的JSON进行排序,以防止往返服务器和多个数据库访问。
如何使用jQuery实现此目标?
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);
在这里播放一个工作示例。