我试图按最高整数值对具有未知键的简单对象进行排序。是否有简洁的代码可以做到这一点?
我已经尝试过了,但是没有成功。
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] 删除。
我来说两句