Javascript:对对象中的对象进行排序

标签 javascript sorting object

如您所想 - 我被卡住了 ;) 我的问题是我有一个对象,其中包含一些其他对象:

let players = {
  buggy: {
    name: 'John',
    surname: 'Cocroach',
    rank: 872
  },
  valentino: {
    name: 'Antonio',
    surname: 'Valencia',
    rank: 788
  },
  tommy: {
    name: 'Tom',
    surname: 'Witcher',
    rank: 101
  },
};

我想做的是按“排名”对“玩家”对象进行排序: (汤米(101),华伦天奴(788), buggy (872)) 或字符串(例如“姓氏”)。更重要的是,我希望它仍然是一个对象(我在其他几个函数中使用它;))

我在这里尝试了一些想法(例如转换为数组),但都没有效果。什么是最佳选择?

最佳答案

由于对象是通过引用存储的,因此您可以拥有一个数组和一个对相同的底层播放器对象进行操作的对象:

 const playersByRank = Object.values(players).sort((a, b) => a.rank - b.rank);

现在您可以通过 players 下的名称或 playersByRank 下的相对排名来访问玩家,例如让玩家“ buggy ”与让排名最高的玩家一样:

players.buggy.test = "works";
console.log(playersByRank[0].test);

关于Javascript:对对象中的对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49199394/

相关文章:

javascript - 覆盖内联CSS!重要

javascript - 我应该监听哪些事件以在 JavaScript 中隐藏自定义上下文菜单

javascript - 谷歌脚本在编辑或删除后检测空单元格

java - 快速排序分而治之

firefox - Firefox 6 中的对象标签框模型(宽度和填充)

javascript - setInterval 在第二次调用后不会停止

c - 如何在 C 中对结构数组进行排序?

arrays - Swift 3 对元组数组进行排序

javascript - 通过引用和拼接传递

PHP - 对象数组中丢失引用?