You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按嵌套属性rate对字典键进行降序排序的实现方法

按rate属性降序获取推荐ID数组的解决方案

没问题,我来帮你搞定这个排序需求!你说得对,首先得把不可直接排序的对象转换成可操作的数组,再通过排序和映射得到目标结果。下面是具体的步骤和代码示例:

步骤分解:

  • 第一步:用Object.entries()把原始对象转换成键值对数组,每个元素是[推荐ID, 推荐属性对象]的形式
  • 第二步:对这个数组按rate属性降序排序,排序时直接比较两个元素的rate值
  • 第三步:用map()提取排序后数组里的推荐ID,得到最终的目标数组

完整代码示例:

const recommendations = {
    '014A8C3D-FE99-4DE3-9F9F-F197A3CB270F': { zL: 0.0402632597754549, zD: 0, mL: 2, mD: 0, rate: 0.02013162988772745 },
    '036EA860-FDF1-40DA-8915-A2F02241DC7D': { zL: 0.0297356539387, zD: 0, mL: 1, mD: 0, rate: 0.0297356539387 },
    '4A49B2C5-62A6-494B-BE77-FBEF5C102579': { zL: 0.052390243902439025, zD: 0, mL: 1, mD: 0, rate: 0.052390243902439025 },
    '640674E4-5080-4BFD-983F-330D1C9150D0': { zL: 0.011376894745, zD: 0, mL: 1, mD: 0, rate: 0.011376894745 }
};

// 转换为键值对数组 -> 按rate降序排序 -> 提取推荐ID
const sortedRecommendations = Object.entries(recommendations)
  .sort((a, b) => b[1].rate - a[1].rate)
  .map(item => item[0]);

console.log(sortedRecommendations);
// 输出:['4A49B2C5-62A6-494B-BE77-FBEF5C102579', '036EA860-FDF1-40DA-8915-A2F02241DC7D', '014A8C3D-FE99-4DE3-9F9F-F197A3CB270F', '640674E4-5080-4BFD-983F-330D1C9150D0']

代码细节解释:

  • Object.entries(recommendations):把原始对象转换成[[id1, obj1], [id2, obj2], ...]的数组结构,让我们能对每个推荐项的属性进行操作
  • .sort((a, b) => b[1].rate - a[1].rate):排序函数中,b[1].rate - a[1].rate实现降序排列;如果需要升序,换成a[1].rate - b[1].rate即可
  • .map(item => item[0]):遍历排序后的数组,只保留每个元素的第一个值(也就是推荐标识符),最终得到纯ID数组

这样就能完美得到你想要的结果啦!

内容的提问来源于stack exchange,提问作者Laurent Maquet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:22:56