2016-07-04 108 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从较小分拣至更大。请注意,您无法将其转换回对象,否则订单将会丢失。

相关问题