2016-07-04 107 views
0

我有一個字典,其中包含以下一些鍵值對:在javascript中對鍵值對進行排序字典

rank = { 
      "Team 1" : 34, 
      "Team 2" : 55, 
      "Team 3" : 29, 
      "Team 4" : 61, 
      ... 
     } 

鍵是團隊名稱和值是在本賽季的終點,所以我想以打印最終排名基於他們的價值觀夫婦排序。

有人可以幫助我嗎?在此先感謝

+1

將它轉換爲數組,然後排序 – k102

+0

您可能會在這裏找到你的迴應: http://stackoverflow.com/questions/25500316/sort-a-dictionary-by-value-in-javascript – L01c

+1

因此它通常更容易使用var rank = [{'name':'Team 1','value':34},{'name':'Team 2','value':55},...];'然後您可以使用所有的數組善舉排序/篩選/映射您的數據。 – Shilly

回答

0

JavaScript中的對象鍵和值沒有固有順序。在將它們分類爲所需順序之前,您需要將它們存儲在有序結構中。

讓我們的項目到Array,裏面確實有內在的順序:

var object = { 
    a: 1, 
    b: 5, 
    c: 2 
} 

var keyValues = [] 

for (var key in object) { 
    keyValues.push([ key, object[key] ]) 
} 

keyValues陣列現在持有['a', 1], ['b', 5], ['c', 2]。讓我們排序該陣列中,每對使用所述第二值進行比較:

keyValues.sort(function compare(kv1, kv2) { 
    // This comparison function has 3 return cases: 
    // - Negative number: kv1 should be placed BEFORE kv2 
    // - Positive number: kv1 should be placed AFTER kv2 
    // - Zero: they are equal, any order is ok between these 2 items 
    return kv1[1] - kv2[1] 
}) 

現在keyValues從較小分揀至更大。請注意,您無法將其轉換回對象,否則訂單將會丟失。

相關問題