node.js - 如何按其中一个键的值对对象进行排序
问题描述
所以我一直在尝试对以下对象进行排序,但遇到了一些麻烦:
let obj = {
"1": {
"name": "card1",
"ryo": 3
},
"2": {
"name": "card2",
"ryo": 7
},
"3": {
"name": "card3",
"ryo": 2
}
}
Object.fromEntries(Object.entries(obj).sort((x, y) => y[1].ryo - x[1].ryo));
上面的代码返回:
{
'1': { name: 'card1', ryo: 3 },
'2': { name: 'card2', ryo: 7 },
'3': { name: 'card3', ryo: 2 }
}
我的目标是让它返回:
{
'2': { name: 'card2', ryo: 7 },
'1': { name: 'card1', ryo: 3 },
'3': { name: 'card3', ryo: 2 }
}
看起来很简单,但我无法让它工作,我不知道为什么它不会排序。
编辑:我想补充一点,我试图按 ryo 以降序对对象进行排序。
解决方案
您可以尝试转换为数组,然后像这样排序
let sorted = Object.entries(obj).sort(function(a, b) {
return b[1].ryo - a[1].ryo
});