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

JavaScript对象数组按KEY排序:按score键降序的最佳实践

对象数组按score降序排序的最佳实践

嘿,我来帮你搞定这个排序问题!你说用Underscore.js的_.sortBy没成功,大概率是因为它默认是升序排列的,和你要的降序刚好相反。下面给你几种靠谱的最佳实践,不管用不用Underscore都能轻松解决:

一、原生JavaScript方案(无需依赖库)

现在原生JS的数组方法已经足够强大,直接用Array.sort()就能实现,代码简洁还不用额外引入库:

// 示例数组
const scoreList = [
  { name: "Luna", score: 90 },
  { name: "Harry", score: 95 },
  { name: "Ron", score: 82 }
];

// 按score降序排序
scoreList.sort((a, b) => b.score - a.score);

原理很简单:sort()的比较函数返回值决定了元素顺序——返回正数时b排在a前面,负数则相反,用b.score - a.score直接就能实现降序。如果是升序就换成a.score - b.score。

二、Underscore.js的正确用法

如果你的项目已经依赖Underscore,有两种方式实现降序:

1. 用_.sortBy + _.reverse(兼容所有Underscore版本)

_.sortBy默认返回升序数组,我们只需要把结果反转一下就行:

const sortedList = _.reverse(_.sortBy(scoreList, 'score'));

2. 用_.orderBy(Underscore 1.8及以上版本支持)

这个方法更直观,直接指定排序方向:

// 第二个参数是排序字段,第三个参数传入'desc'表示降序
const sortedList = _.orderBy(scoreList, 'score', 'desc');

如果要多字段排序也很方便,比如先按score降序,再按name升序:

const sortedList = _.orderBy(scoreList, ['score', 'name'], ['desc', 'asc']);

总结最佳实践

  • 如果不需要依赖第三方库,优先用原生Array.sort(),轻量且性能出色;
  • 如果已经在用Underscore,且版本≥1.8,推荐用_.orderBy,代码可读性更高;旧版本就用_.sortBy加_.reverse的组合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:23:47