关于数组:在键上排序JavaScript对象

Sort JavaScript Object on keys

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Sort JavaScript object by key

1
2
3
4
5
6
7
8
9
10
11
12
13
{
   "0": 3900,
   "1": 42,
   "10": 135,
   "2": 5,
   "3": 20,
   "4": 33,
   "5": 24,
   "6": 35,
   "7": 56,
   "8": 60,
   "9": 147
}

如何根据键整数类型对javascript键进行排序。对于上述输入,最终输出的格式应为

1
2
3
4
5
6
7
8
9
10
11
12
13
{
0: 39,
1: 42,  
2: 5,
3: 20,
4: 33,
5: 24,
6: 35,
7: 56,
8: 60,
9: 147,
10: 135,
}


这是一个javascript对象。它们无法分类。

例如,无论元素的放置顺序如何,在代码中,当您记录对象时,Google Chrome都会自动对它们进行排序。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var obj = {
   "0": 3900,
   "1": 42,
   "10": 135,  // See? not sorted.
   "2": 5,
   "3": 20,
   "4": 33,
   "5": 24,
   "6": 35,
   "7": 56,
   "8": 60,
   "9": 147
}
for(key in obj){
    console.log(key, obj[key]);
}

输出:

1
2
3
4
5
6
7
8
9
10
11
0 3900
1 42
2 5
3 20
4 33
5 24
6 35
7 56
8 60
9 147
10 135  // Suddenly, without our intervention, the object got sorted by the browser.

所以,我想说的是:它依赖于浏览器。不能对对象排序。它取决于浏览器实现如何迭代对象。

现在,在这个特定的例子中,我认为最好使用一个数组,因为键是序列号,无论如何:

1
var arr = [3900, 42, 5, 20, 33, 24, 35, 56, 60, 147, 135];

您可以像访问对象(arr[5] == 24一样访问它,作为额外的奖励,它有一个.length