0

重複の可能性:
JavaScript オブジェクトをキーで並べ替える

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

キー整数タイプに基づいて JavaScript キーをソートする方法。上記の入力の場合、最終出力は次の形式にする必要があります

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

1 に答える 1

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!

于 2013-01-08T09:01:26.450 に答える