我有一个
JSON对象,我想先按一个键排序,然后再按类似于sql中的两列排序的第二个键.以下是我的JSON示例:
{ "GROUPID":3169675,"LASTNAME":"Chantry" }
我想订购GROUPID的所有结果,然后由LASTNAME命令.我使用JSON排序功能按一个键进行排序,但不是多个.
任何帮助都会很棒.
解决方法
假设你有一个对象数组:
var data = [ { "GROUPID":3169675,"LASTNAME":"Chantry" },{ "GROUPID":3169612,"LASTNAME":"Doe" },... ];
您可以使用自定义比较器进行排序.要按GROUPID排序,然后由LASTNAME排序,比较两个对象的逻辑是:
if GROUPID of first is smaller than second return -1; else if GROUPID of first is larger than second return 1; else if LASTNAME of first is smaller than second return -1; else if LASTNAME of first is larger than second return 1; else return 0;
要对对象数组进行排序,请使用上述算法并在数组上调用sort方法.排序完成后,数据应按要求排序顺序排列.
data.sort(function(a,b) { // compare a and b here using the above algorithm });
这是另一个非常similar question我最近回答.这是关于使用jQuery对多个列进行排序,但是您可以轻松地删除jQuery部分.它提供了可以扩展到多个列的一些可定制的方法.