【问题标题】:Sort dictionary of key:value pairs in javascript [duplicate]javascript中键:值对的排序字典[重复]
【发布时间】:2016-11-06 08:33:59
【问题描述】:

我有一个包含一些键值对的字典,如下所示。

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

键是球队名称,值是赛季结束时的积分,所以我想根据他们的值对夫妇进行排序,以便打印最终排名。

有人可以帮助我吗?提前致谢

【问题讨论】:

  • 将其转换为数组,然后排序
  • 您可以在这里找到您的回复:stackoverflow.com/questions/25500316/…
  • 因此通常更容易使用var rank = [{'name':'Team 1', 'value':34}, {'name':'Team 2', 'value':55}, ...]; 然后您可以使用所有的数组优势对数据进行排序/过滤/映射。

标签: javascript sorting dictionary key


【解决方案1】:

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 从小到大排序。请注意,您不能将其转换回对象,否则订单将丢失。

【讨论】:

    猜你喜欢
    • 2013-09-14
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 2010-10-09
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    相关资源
    最近更新 更多