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

如何按指定键排序对象数组,再提取指定键值生成有序新数组?

按relevance排序并提取name到新数组的解决方案

假设我们有一个名为result的对象数组:

const result = [
  { "name": "C:\\file.json", "relevance": 0.5 },
  { "name": "C:\\folder", "relevance": 0.5454545454545454 },
  { "name": "C:\\file_1.txt", "relevance": 0.1 }
];

我们需要按relevance键对该数组进行降序排序,并将排序后的name值提取到新数组arr中,最终得到:

["C:\\folder", "C:\\file.json", "C:\\file_1.txt"]

很简单,你可以用JavaScript里的sort()和map()方法组合来搞定这个需求,具体步骤如下:

  1. 先排序数组:用sort()方法传入一个自定义的比较函数,让数组按relevance从高到低排列。这里只要返回b.relevance - a.relevance就能实现降序(如果要升序就反过来用a.relevance - b.relevance)。
  2. 再提取name字段:用map()方法遍历排序后的数组,把每个对象里的name属性挑出来,就能生成你想要的新数组了。

完整的代码示例如下:

const result = [
  { "name": "C:\\file.json", "relevance": 0.5 },
  { "name": "C:\\folder", "relevance": 0.5454545454545454 },
  { "name": "C:\\file_1.txt", "relevance": 0.1 }
];

// 先排序再提取name,一步到位
const arr = result.sort((a, b) => b.relevance - a.relevance).map(item => item.name);

console.log(arr);
// 输出结果正好是你要的:["C:\\folder", "C:\\file.json", "C:\\file_1.txt"]

小提醒

  • 注意哦,sort()方法会直接修改原有的result数组,如果不想动原数组的话,可以先复制一份再排序,比如用扩展运算符:[...result].sort(...)
  • 因为这里的relevance是数值类型,所以直接用减法比较就足够了,不用额外处理字符串转换的问题。

更新说明

这并非重复问题!我不明白为何JavaScript讨论区中总是有人将明显不重复的问题标记为重复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:57:02