首页 > 解决方案 > 如何按其中一个键的值对对象进行排序

问题描述

所以我一直在尝试对以下对象进行排序,但遇到了一些麻烦:

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 以降序对对象进行排序。

标签: node.jsjsonobject

解决方案


您可以尝试转换为数组,然后像这样排序

let sorted = Object.entries(obj).sort(function(a, b) {
return b[1].ryo - a[1].ryo
});

推荐阅读