在键上排序JavaScript对象

时间:2013-01-08 08:59:18

标签: javascript arrays

  

可能重复:
  Sort JavaScript object by key

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

如何根据键整数Type对javascript键进行排序。 对于上面给出的输入,最终输出应该是

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

1 个答案:

答案 0 :(得分:1)

这是一个JavaScript对象。它们无法排序。

例如,无论您将元素放入何种顺序,在代码中,Google Chrome都会在您记录对象时自动对其进行排序。

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]);
}

输出:

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.

所以,我想说的是:它依赖于浏览器。您无法对对象进行排序。这取决于浏览器实现如何迭代对象。

现在,在这种特殊情况下,我认为使用数组更好一点,因为键是连续数字,无论如何:

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

您可以像访问对象一样访问此对象(arr[5] == 24),另外还有.length