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

如何对JavaScript中reduce聚合后的对象进行升序排序?

要实现按统计值升序排序的结果,你需要在现有reduce统计的基础上新增排序处理步骤——因为reduce只负责完成聚合统计,排序需要在统计完成后才能进行。

具体代码可以这么写:

const array = [ { type: "sale", product: "aaa" } , { type: "rent", product: "bbb" } , { type: "sale", product: "ccc" }];

// 第一步:用reduce完成统计
const countResult = array.reduce((acc, o) => {
  acc[o.type] = (acc[o.type] || 0) + 1;
  return acc;
}, {});

// 第二步:将统计结果转成键值对数组,按值升序排序后再转回对象
const sortedResult = Object.fromEntries(
  Object.entries(countResult).sort(([, valA], [, valB]) => valA - valB)
);

console.log(sortedResult); // 输出:{ rent: 1, sale: 2 }

简单解释下核心步骤:

  • Object.entries(countResult)会把统计对象转换成[["sale", 2], ["rent", 1]]格式的键值对数组
  • sort(([, valA], [, valB]) => valA - valB)针对数组里的统计值做升序排序,排序后得到[["rent", 1], ["sale", 2]]
  • Object.fromEntries把排序后的键值对数组重新转回对象,就得到了有序的统计结果

注意:虽然ES6+之后普通对象会保留键的插入顺序,但如果要明确按统计值排序,必须通过数组排序再转对象的方式——因为对象本身不是为排序场景设计的,直接依赖插入顺序无法满足按值排序的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 08:01:20