簡體   English   中英

將對象文字轉換為已排序的數組

[英]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.keysArray.prototype.sortArray.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM