我有一个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应该具有要求的排序顺序的元素。
data.sort(function(a, b) {
    // compare a and b here using the above algorithm
});

这是我最近回答的另一个非常similar question。这是关于使用jQuery对多列进行排序的方法,但是您可以轻松剥离jQuery部分。它提出了一些可定制的方法,这些方法可以扩展到多列。

关于javascript - 如何通过两个键订购JSON对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3230028/

10-09 20:13
查看更多