通过将JSON发送到多维数组来对其进行排序

时间:2014-04-17 20:53:25

标签: javascript arrays json sorting

我需要按字母顺序排序JSON对象。

我想将它发送到对象数组然后排序。现在我成功地将它发送到多维数组和排序,但仍然无法对对象数组进行排序。

我有对象。

var Response = { 
    "10001": "Fort Worth",
    "10002": "Dallas",
    "32402": "Austin"         
};

我把它发送到数组。

var sort_array_of_array = [];
for (var my_key in Response) {
    var inner_array = [];
    inner_array[0] = my_key;
    inner_array[1] = Response[my_key];
    sort_array_of_array.push(inner_array);         
}     

结果我得到一个数组

sort_array_of_array: Array[3]
0: Array[2]
    0: "10001"
    1: "Fort Worth"
    length: 2     
1: Array[2]
    0: "10002"
    1: "Dallas"
    length: 2     
2: Array[2]
    length: 3

我对它进行了分类。

sort_array_of_array.sort(function(a, b)
{   
    // if they are equal, return 0 (no sorting)
    if (a[1] == b[1]) { return 0; }
    if (a[1] > b[1])
    {
        // if a should come after b, return 1
        return 1;
    }
    else
    {
        // if b should come after a, return -1
        return -1;
    }
});

我检查了排序的数组。

<div id="my_after_sort"></div>

for (i = 0; i < sort_array_of_array.length; ++i) {
    //alert(sort_array_of_array[i][0]);
   $('#my_after_sort').append(sort_array_of_array[i][1]);
}

但是如果我将原始对象发送到对象数组,我就无法对其进行排序。

var sort_array_of_object = [];
for (var key in Response) {
    sort_array_of_object.push({key:Response[key]});         
}

是否可以对这个对象数组进行排序以及如何进行排序?

1 个答案:

答案 0 :(得分:0)

制作像这样的对象数组要简单得多:

var arrayOfObjects = [];
for (var key in Response) {
  arrayOfObjects.push({
    key: key,
    name: Response[key]
  });
}

然后,您可以通过比较每个元素的name属性对其进行排序:

arrayOfObjects.sort(function(a,b) {
  if (a.name > b.name) {
    return 1;
  } else if (a.name < b.name) {
    return -1;
  } else {
    return 0;
  }
});