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

如何高效统计JavaScript数组中班次与部门的关联数量

高效统计班次与部门组合数量的JavaScript方案

嘿,作为JavaScript新手真的不用把这个问题想复杂!我给你准备了一个简单易懂的方案,既能统计每个班次的总人数,也能统计「班次+部门」组合的人数,完全贴合你想要的输出格式~

核心思路

我们可以用一个对象来存储所有统计结果,遍历你的数据数组时,分别更新单独班次和班次+部门组合的计数,最后把统计对象转换成你需要的字符串格式就行。

代码实现

// 你的原始数据数组
const data = [
  {"shift":2,"department":"Pallet-Pack"},
  {"shift":1,"department":"Carton-Pack"},
  {"shift":2,"department":"Carton-Pack"},
  {"shift":1,"department":"Picking"},
  {"shift":1,"department":"Carton-Pack"},
  {"shift":1,"department":"Carton-Pack"},
  {"shift":2,"department":"Picking"},
  {"shift":3,"department":"Inventory"},
  {"shift":1,"department":"Carton-Pack"},
  {"shift":1,"department":"Receiving"},
  {"shift":3,"department":"Equipment"},
  {"shift":2,"department":"Receiving"},
  {"shift":1,"department":"Picking"},
  {"shift":1,"department":"Picking"},
  {"shift":2,"department":"Carton-Pack"},
  {"shift":2,"department":"Carton-Pack"},
  {"shift":1,"department":"Receiving"},
  {"shift":1,"department":"Returns"},
  {"shift":1,"department":"Receiving"},
  {"shift":1,"department":"Picking"},
  {"shift":2,"department":"Receiving"},
  {"shift":1,"department":"Pallet-Pack"},
  {"shift":2,"department":"Picking"},
  {"shift":1,"department":"Carton-Pack"}
];

// 用reduce方法统计数据
const stats = data.reduce((acc, item) => {
  // 统计单独班次的数量
  const shiftKey = `shift ${item.shift}`;
  acc[shiftKey] = (acc[shiftKey] || 0) + 1;

  // 统计班次+部门组合的数量
  const comboKey = `shift ${item.shift} & ${item.department}`;
  acc[comboKey] = (acc[comboKey] || 0) + 1;

  return acc;
}, {});

// 转换成你想要的字符串格式
const result = Object.entries(stats).map(([key, value]) => `${key}: ${value}`).join(' ');

console.log(result);

代码解释

  • reduce方法:这是JavaScript里专门做累加/聚合操作的工具,比手动写for循环更简洁,逻辑也更清晰。我们用它遍历整个数据数组,逐步构建统计对象。
  • 统计键的生成:
    • 单独班次的键是shift X(比如shift 1)
    • 组合键是shift X & 部门名称(比如shift 1 & Carton-Pack)
  • 计数更新:acc[key] = (acc[key] || 0) + 1这句话的意思是,如果统计对象里还没有这个键,就从0开始加1;如果已经有了,就在原来的数字上加1。
  • 格式转换:最后用Object.entries把统计对象转成键值对数组,再用map把每一组转成key: value的字符串,最后用空格连接起来,就得到了你想要的输出格式。

运行结果

运行这段代码后,你会得到类似这样的输出:

shift 2: 9 shift 2 & Pallet-Pack: 1 shift 1: 13 shift 1 & Carton-Pack: 6 shift 1 & Picking: 4 shift 1 & Receiving: 3 shift 1 & Returns: 1 shift 1 & Pallet-Pack: 1 shift 2 & Carton-Pack: 3 shift 2 & Picking: 2 shift 2 & Receiving: 2 shift 3: 2 shift 3 & Inventory: 1 shift 3 & Equipment: 1

完全符合你想要的统计需求,而且代码简单易读,新手也能轻松理解~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:56:08