javascript - 如何对嵌套对象映射进行排序并根据排序高效地赋值?

标签 javascript sorting

我有一个像这样的对象:

{
  "playerId1": {
    "score": 100,
    "rank": 0
  },
  "playerId2": {
    "score": 500,
    "rank": 0
  },
  "playerId3": {
    "score": 200,
    "rank": 0
  }
}

我需要根据分数对它们进行排序,然后将排序顺序分配给排名。 最好的方法是什么?

我厌倦了转换为数组,然后排序很容易,但我想保留对象结构。

最佳答案

您可以设置排名并将其保留为对象。

var temp = {
  "playerId1": {
    "score": 100,
    "rank": 0
  },
  "playerId2": {
    "score": 500,
    "rank": 0
  },
  "playerId3": {
    "score": 200,
    "rank": 0
  }
};

Object.values(temp).sort(function(a, b){
  return a.score - b.score;
}).forEach(function(player, rank){
  player.rank = rank;
});

console.log(temp);

关于javascript - 如何对嵌套对象映射进行排序并根据排序高效地赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51200269/

相关文章:

JavaScript 包括另一种

java - 如何按字母顺序对列表进行排序?

ios - 如何在 Swift3 iOS 中根据键值按升序获取数组

arrays - 如何使用 CoffeeScript 对数组进行排序?

具有特定要求的 C++ 数组排序/改组

javascript - 如何在新标签页中打开 highcharts 的积分网址

javascript - JavaScript 中的时间/小时语法 - 如何处理不在整点的时间

javascript - Firefox 和 Chrome 中的 keyup() 错误?

python - 按多个条件对列表进行排序并附加

javascript - 如何在javascript中调用这个定时transitereion