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

JavaScript/Node.js中动态ID的数组条目统计优化实现问询

动态统计ID条目数量并排序的实现方案

没问题,针对你这个动态ID统计的需求,咱们可以用JavaScript的Array.reduce()先完成计数,再转换格式并排序,完全不需要硬编码判断ID,完美适配服务器返回的动态数据场景。

完整实现代码

const array = [ ['2','Yes'], ['2','Yes'], ['2','Yes'], ['3','Yes'], ['3','Yes'], ['4','Yes'] ];

// 1. 统计每个ID的出现次数
const countMap = array.reduce((acc, [id]) => {
  // 如果当前ID还没统计过,初始化为0再加1,否则直接累加
  acc[id] = (acc[id] || 0) + 1;
  return acc;
}, {});

// 2. 转换为你需要的数组对象格式
const formattedResult = Object.entries(countMap).map(([id, count]) => ({
  ID: id,
  Count: count.toString() // 按你的要求转成字符串类型,不需要的话可以直接用count数字
}));

// 3. 按Count升序排序(注意要转成数字比较,避免字符串排序的问题)
const sortedResult = formattedResult.sort((a, b) => parseInt(a.Count) - parseInt(b.Count));

console.log(sortedResult);
// 输出:[{"ID":"4","Count":"1"},{"ID":"3","Count":"2"},{"ID":"2","Count":"3"}]

代码说明

  • 统计阶段:reduce()遍历原数组,用对象的键存储ID,值存储对应计数,不管服务器返回什么新ID,都会自动被统计进去,完全动态。
  • 格式转换:Object.entries()把统计对象转成[ID, Count]的数组,再通过map()转换成你需要的结构。
  • 排序阶段:因为Count是字符串类型,所以用parseInt()转成数字后再比较,确保升序排序的正确性。

这个方案完全摆脱了硬编码的限制,不管服务器返回的ID是多少、有多少种,都能正确统计并输出符合要求的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:51:18