按递减值对JS对象排序(使用未知键)

用户名

我试图按最高整数值对具有未知键的简单对象进行排序。是否有简洁的代码可以做到这一点?

我已经尝试过了,但是没有成功。

let fixSort = {};
  Object.keys(leaderboard).sort().forEach(function(key){
  fixSort[key] = leaderboard[key];
});
console.log(fixSort);

这是对象:

let leaderboard = {
  "Bob" : 2,
  "Jimmy" : 1,
  "Emma" : 6
}

我的目标是将其排序为:

{
  "Emma" : 6,
  "Bob" : 2,
  "Jimmy" : 1
}
乔纳斯·威尔姆斯

好吧,“你可以”:

 const fixSort = {};

 for(const [k, v] of Object.entries(leaderboard).sort((a, b) => a[1] - b[1]))
  fixSort[k] = v;
 }

但是,老实说,这是一种构造此方法的坏方法(因为添加新的键值对是不可能的,因为您必须重新创建整个对象)。而是使用对象数组:

  const leaderboard = [
   { name: "Jack", score: 7 },
   //...
 ];

如果需要查找表,则只需基于该对象创建一个查找表:

 const byName = {};
 for(const player of leaderboard)
   byName[player.name] = player;

当然,您也可以对数组进行排序:

 leaderboard.sort((a, b) => a.score - b.score);

然后,您可以轻松添加/删除播放器。

 function addToLeaderBoard(player) {
   leaderboard.push(player);
   leaderboard.sort((a, b) => a.score - b.score);
   byName[player.name] = player;
 }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章