Javascript 按键值对Json数组重新排序

Javascript 按键值对Json数组重新排序,javascript,json,Javascript,Json,我有一个联系人列表,它以这种很长的形式返回给我。它是根据输入顺序返回的(第一组括号外的字段,缩进)。我遇到的问题是我希望它按显示名称的字母顺序排列。因为这是在它自己的数组中,在主数组的内部,所以我很难让整个数组按它重新排序。有人能弄明白吗?谢谢哦,这必须在JS中完成 { "0": {"id":1,"rawId":null,"displayName":"Person 1","name":null,"nickname":null,"phoneNumbers":[{"type":"mobile","v

我有一个联系人列表,它以这种很长的形式返回给我。它是根据输入顺序返回的(第一组括号外的字段,缩进)。我遇到的问题是我希望它按显示名称的字母顺序排列。因为这是在它自己的数组中,在主数组的内部,所以我很难让整个数组按它重新排序。有人能弄明白吗?谢谢哦,这必须在JS中完成

{
"0":
{"id":1,"rawId":null,"displayName":"Person 1","name":null,"nickname":null,"phoneNumbers":[{"type":"mobile","value":"phonenumb53534r","id":0,"pref":false}],"emails":null,"addresses":null,"ims":null,"organizations":null,"birthday":null,"note":null,"photos":null,"categories":null,"urls":null},
"1":
{"id":2,"rawId":null,"displayName":"Person 2","name":null,"nickname":null,"phoneNumbers":[{"type":"mobile","value":"phonenumber535345","id":0,"pref":false}],"emails":null,"addresses":null,"ims":null,"organizations":null,"birthday":null,"note":null,"photos":null,"categories":null,"urls":null},
"2":
{"id":3,"rawId":null,"displayName":"Person 3","name":null,"nickname":null,"phoneNumbers":[{"type":"mobile","value":"phonenumber47474","id":0,"pref":false}],"emails":null,"addresses":null,"ims":null,"organizations":null,"birthday":null,"note":null,"photos":null,"categories":null,"urls":null}, goes on for a couple hundred rows 

JavaScript中的对象本质上不是有序的。如果你有一个数组,你可以使用它。否则,您必须自己将对象的外部部分转换为数组:

var arrayOfObj = [];

for (item in obj) {
    if (obj.hasOwnProperty(item)) {
        arrayOfObj.push(obj[item]);
    }
}
如果在获得JSON之前就可以这样做,那就更好了。一旦有了它,就可以使用普通数组
.sort
方法

arrayOfObj.sort(function (a, b) {
    if (a.displayName < b.displayName) {
        return -1;
    }
    else if (a.displayName > b.displayName) {
        return 1;
    }
    return 0;
});
arrayOfObj.sort(函数(a,b){
if(a.displayNameb.displayName){
返回1;
}
返回0;
});

您需要将responseText解析为JSON。但由于它是作为对象文本返回的,所以必须将其转换为数组。然后,您可以使用自定义比较器函数对其进行排序

var json = JSON.parse(response), 
data = [];

for (key in json) {
 data.push(json[key]);   
}

data.sort(function (a, b) {
    return a.displayName > b.displayName;
});

这些是对象,而不是数组。对象没有任何设置顺序。。是否要将嵌套对象按顺序存储在数组中?