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

如何用JavaScript按type和program分组统计reference数量?

问题描述

我有一个由三个数组组成的result变量,代码如下:

var result = {
  type: [a,a,b,c,d,a,a,b],
  program : [P1, P1, P2, P1, P2, P2, P2, P1],
  reference : [ref1,ref2,ref3,...,ref8]
}

希望按type和program对reference进行分组,得到如下格式的数据集:

programme type count
P1 a 2
P1 b 1
P1 d 1
P2 a 2
P2 b 1 
P2 d 1
实现方案

这里提供JavaScript的实现思路,核心是通过遍历数组、组合分组键完成统计:

  • 用临时对象存储分组统计结果,以program和type的组合作为唯一键避免重复分组
  • 统计每个组合的出现次数,可按需跳过不需要的类型(比如示例中的c)
  • 最后将统计结果转换为目标格式的数组或文本

具体代码如下:

// 假设a、b、c、d、P1、P2为字符串类型,若为变量需提前定义
const result = {
  type: ['a','a','b','c','d','a','a','b'],
  program : ['P1', 'P1', 'P2', 'P1', 'P2', 'P2', 'P2', 'P1'],
  reference : ['ref1','ref2','ref3','ref4','ref5','ref6','ref7','ref8']
};

// 初始化统计对象
const stats = {};

// 遍历数组进行分组统计
for (let i = 0; i < result.type.length; i++) {
  const currentType = result.type[i];
  const currentProgram = result.program[i];

  // 跳过不需要统计的类型(比如示例中的c,不需要可删除此行)
  if (currentType === 'c') continue;

  // 生成唯一分组键
  const groupKey = `${currentProgram}_${currentType}`;

  // 更新统计计数
  if (stats[groupKey]) {
    stats[groupKey].count++;
  } else {
    stats[groupKey] = {
      programme: currentProgram,
      type: currentType,
      count: 1
    };
  }
}

// 转换为数组格式的结果
const groupedResult = Object.values(stats);

// 转换为指定的文本输出格式
let outputText = 'programme type count\n';
groupedResult.forEach(item => {
  outputText += `${item.programme} ${item.type} ${item.count}\n`;
});

// 打印结果
console.log(outputText);

运行后会输出符合要求的文本格式,也可以直接使用groupedResult数组进行后续处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 06:42:52