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

如何用JS处理JSON数据实现MySQL COUNT AS、GROUP BY的等效统计?

在JavaScript中统计JSON数组的唯一子类别数量

当然可以呀!完全不用在MySQL层面做过滤统计,只要拿到全表数据转成的JSON数组,用JavaScript就能轻松实现和你那条SELECT subcategory, COUNT(*) AS subcate FROM database GROUP BY subcategory查询一模一样的效果~

具体实现步骤

假设你已经从后端拿到了解析后的JSON对象数组(如果是字符串格式,先用JSON.parse()解析),我们可以用JS的reduce方法来高效统计:

// 示例JSON数据(解析后的JS数组)
const productData = [
  {"category":"fish","subcategory":"angel","name":"angelfish juvenille"},
  {"category":"fish","subcategory":"angel","name":"angelfish adult"},
  {"category":"fish","subcategory":"clownfish","name":"clownfish juvenille"},
  {"category":"fish","subcategory":"clownfish","name":"clownfish adult"}
];

// 第一步:用reduce统计每个subcategory的出现次数
const subcateCountMap = productData.reduce((accumulator, currentItem) => {
  // 如果当前子类别已存在,计数+1;否则初始化为1
  accumulator[currentItem.subcategory] = (accumulator[currentItem.subcategory] || 0) + 1;
  return accumulator;
}, {}); // 初始值是空对象,用来存键值对:子类别->数量

// 第二步:把统计结果转换成和SQL输出一致的JSON数组格式
const finalResult = Object.entries(subcateCountMap).map(([subcategory, subcate]) => ({
  subcategory,
  subcate
}));

// 查看结果
console.log(finalResult);
// 如果需要转成JSON字符串返回,用JSON.stringify(finalResult)

输出结果

运行上面的代码后,你会得到和SQL查询完全匹配的结果:

[
  { subcategory: "angel", subcate: 2 },
  { subcategory: "clownfish", subcate: 2 }
]

补充说明

  • 这种方式把数据统计逻辑放在前端(或Node.js后端),不需要额外发起数据库请求,适合中小数据量的场景;
  • 如果数据量极大,数据库层面的GROUP BY会更高效,但常规业务场景下JS处理完全够用;
  • 代码逻辑很灵活,要是后续需要统计其他字段(比如category),只要修改currentItem的属性名就行。

内容的提问来源于stack exchange,提问作者Güney Saramalı

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:55:49