[英]Converting an object literal to a sorted Array
我有一個對象文字,其鍵的值是更多的對象,內部對象的一個鍵被命名為“rank” - 並具有浮點值。 我想將對象文字轉換為內部對象的數組,按“rank”的值排序。
輸入對象:
{
452:{
bla:123,
dff:233,
rank:2
},
234:{
bla:123,
dff:233,
rank:1
}
}
輸出數組:
[
{ bla:123, dff:233, rank:1},
{ bla:123, dff:233, rank:2 }
]
例:
var data = {
foo: {
rank: 5
},
bar: {
rank: 2
},
baz: {
rank: 8
}
};
使用Javascript:
var mappedHash = Object.keys( data ).sort(function( a, b ) {
return data[ a ].rank - data[ b ].rank;
}).map(function( sortedKey ) {
return data[ sortedKey ];
});
這將首先按obj.rank
的值對內部對象進行sort
,然后將包含的對象map
到數組中 。
結果 : [{rank: 2}, {rank: 5}, {rank: 8}]
參考: Object.keys
, Array.prototype.sort
, Array.prototype.map
上面的代碼包含ECMAscript 262版本5代碼,可在所有現代瀏覽器中使用。 如果您還想支持舊版瀏覽器,則需要包含各種ES5-Shim庫中的一個。
迭代對象的屬性,將內部對象推入數組,然后使用自定義排序函數對數組進行排序:
var inputObject = {}, // your object here
arr = [];
for (var k in inputObject)
arr.push(inputObject[k]);
arr.sort(function(a,b) { return a.rank - b.rank; });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.