0

私はこの連想配列を持っています:

Arr =  {
     "ID1":{"Attr1":"b","Attr2":"5"},
     "ID2":{"Attr1":"d","Attr2":"2"},
     "ID3":{"Attr1":"h","Attr2":"8"}
     }

この結果を取得するには、属性2を使用して、IDではなく番号で並べ替えます。

Arr =  { 
     "ID3":{"Attr1":"h","Attr2":"8"}
     "ID1":{"Attr1":"b","Attr2":"5"},
     "ID2":{"Attr1":"d","Attr2":"2"},
     }

これが可能であれば?

4

2 に答える 2

3
Object.keys( Arr ).sort(function( a, b ) {
    return +Arr[ b ].Attr2 - +Arr[ a ].Attr2;
}).forEach(function( key ) { 
    console.log( key );
});

Object.keysとを呼び出すArray.prototype.sortことで、少なくとも任意のオブジェクトのキーを並べ替えることができます。これにより、これらのキーと値のペアに順番にアクセスできます。

上記のスニペットの出力は次のとおりです。

ID3
ID1
ID2
于 2012-12-06T21:13:00.220 に答える
2

Javasriptには連想配列がありません-それはオブジェクトです。また、Javascriptでは、オブジェクトのプロパティの順序は保証されていません。したがって、何かを並べ替える前に、まずデータを配列に変換する必要があります。

そこからsort、配列を呼び出すだけです。

于 2012-12-06T21:12:51.283 に答える