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

JavaScript如何对对象数组按score字段降序排序后提取name字段值

实现方案

你可以通过数组的sort和map组合调用实现需求,完整代码如下:

const obj = {
  "total": [{
      "name": "asdf",
      "score": 8
    },
    {
      "name": "zxcv",
      "score": 4
    },
    {
      "name": "qwer",
      "score": 17
    },
    {
      "name": "poiu",
      "score": 8
    },
    {
      "name": "lkjh",
      "score": 6
    }
  ]
}

const result = obj.total
  // 按score降序排序
  .sort((a, b) => b.score - a.score)
  // 提取所有name字段组成新数组
  .map(item => item.name)

console.log(result) // 输出:["qwer", "asdf", "poiu", "lkjh", "zxcv"]

逻辑说明

  1. sort((a, b) => b.score - a.score):数组排序的比较函数返回b的score减去a的score,就能实现按score从大到小降序排列。ES2019之后标准规定JS的sort为稳定排序,score值相同的元素会保留原数组中的相对顺序,刚好匹配预期输出中asdf排在poiu之前的要求。
  2. map(item => item.name):遍历排序后的数组,将每一项的name属性提取出来,组成新的数组返回。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:45:03