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.keysand Array.prototype.sort,您至少可以对任何对象的键进行排序。这样,您可以按顺序访问这些键/值对。

上述代码段的输出是

ID3
ID1
ID2
于 2012-12-06T21:13:00.220 回答
2

Javasript 没有关联数组——它是一个对象。而在 Javascript 中,对象属性的顺序并不能保证。因此,在开始对任何内容进行排序之前,您首先需要将数据转换为数组。

从那里,只需调用sort数组即可。

于 2012-12-06T21:12:51.283 回答