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

JavaScript实现JSON数组按unit分组统计账号数量及去重账号名

实现思路

按unit字段对原数组分组,分别统计每个分组的总条目数、对账号名去重存储,最后把分组映射对象转为数组即可得到目标结果。

完整实现代码

// 原始数据
const jsondata = [
  {"unit": "H1", "account": "ambro","domain": "DFRE"},
  {"unit": "H1","account": "ambro","domain": "DFRE"},
  {"unit": "H2","account": "Honda","domain": "HRO"},
  {"unit": "H2","account": "ford","domain": "HRO"}
];

// 用对象做分组映射
const groupMap = {};
jsondata.forEach(item => {
  const unitKey = item.unit;
  // 不存在对应分组则初始化
  if (!groupMap[unitKey]) {
    groupMap[unitKey] = {
      unitname: unitKey,
      no_of_accounts: 0,
      // 用Set存储账号自动去重,大数据量下性能优于数组includes判断
      accounts_name: new Set()
    };
  }
  // 累加当前分组总条目数
  groupMap[unitKey].no_of_accounts += 1;
  // 存入账号(Set自动去重)
  groupMap[unitKey].accounts_name.add(item.account);
});

// 转换为最终输出格式,可搭配sort调整账号顺序
const result = Object.values(groupMap).map(group => ({
  ...group,
  // 不需要调整顺序可去掉.sort()
  accounts_name: Array.from(group.accounts_name).sort()
}));

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

输出结果

[
  { unitname: 'H1', no_of_accounts: 2, accounts_name: [ 'ambro' ] },
  { unitname: 'H2', no_of_accounts: 2, accounts_name: [ 'Honda', 'ford' ] }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:54:03