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

如何基于Geo维度统计JSON数据中LeadStage的数量

解决方案:按Geo维度分组统计LeadStage数量

看起来你已经有了全局统计的基础,现在只需要调整分组的维度,把Geo和LeadStage的组合作为统计的核心,之后再转换成你需要的数组格式就行。我帮你修改了代码,直接就能得到想要的结果:

var data = { "leads":{ "data":[ { "UserName":"Tharun Sairam", "Geo":"US East", "LeadStage":"SGL" }, { "UserName":"Tharun Sairam", "Geo":"US East", "LeadStage":"MGL" }, { "UserName":"Praveen Kumar", "Geo":"US West", "LeadStage":"SGL" }, { "UserName":"Souvik bhattacharya", "Geo":"US East", "LeadStage":"SGL" }, { "UserName":"Denisse Morales", "Geo":"NSU", "LeadStage":"MGL" }, { "UserName":"Souvik bhattacharya", "Geo":"US East", "LeadStage":"SGL" }, { "UserName":"Souvik bhattacharya", "Geo":"US East", "LeadStage":"SGL" }, { "UserName":"Souvik bhattacharya", "Geo":"US East", "LeadStage":"SGL" }, { "UserName":"Anthony Susairaj", "Geo":"US West", "LeadStage":"RGL" }, { "UserName":"Vivek Sharma", "Geo":"NSU", "LeadStage":"SGL" }, { "UserName":"Souvik bhattacharya", "Geo":"US East", "LeadStage":"SGL" }, { "UserName":"Arvind Partha", "Geo":"US West", "LeadStage":"SGL" }, { "UserName":"Kaviarasan Selvaraj", "Geo":"NSU", "LeadStage":"SGL" }, { "UserName":"Tharun Sairam", "Geo":"US East", "LeadStage":"MGL" } ] } };

// 修改分组函数:同时按Geo和LeadStage嵌套分组统计
function groupByGeoAndLeadStage(arr) {
  var groupBy = {};
  $.each(arr, function () {
    // 先确保当前Geo的分组容器存在
    if (!groupBy[this.Geo]) {
      groupBy[this.Geo] = {};
    }
    // 再统计该Geo下对应LeadStage的数量
    groupBy[this.Geo][this.LeadStage] = 1 + (groupBy[this.Geo][this.LeadStage] || 0);
  });
  return groupBy;
}

// 修改转换函数:把嵌套分组结构转换成目标数组格式
function createGeoLeadStageArray(obj) {
  var arr = [];
  // 遍历每个Geo分组
  Object.keys(obj).forEach(function(geo) {
    // 遍历当前Geo下的所有LeadStage统计项
    Object.keys(obj[geo]).forEach(function(leadStage) {
      arr.push({
        Geo: geo,
        LeadStage: leadStage,
        count: obj[geo][leadStage]
      });
    });
  });
  return arr;
}

var resObj = groupByGeoAndLeadStage(data.leads.data);
var resArray = createGeoLeadStageArray(resObj);
console.log(resArray);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

代码说明:

  1. groupByGeoAndLeadStage函数:不再只按LeadStage全局统计,而是先以Geo为一级分组,每个Geo下再按LeadStage统计数量,形成{ "US East": { "SGL": 6, "MGL": 2 }, ... }这样的嵌套结构,确保统计维度准确。
  2. createGeoLeadStageArray函数:遍历嵌套结构的每一层,把每个「Geo+LeadStage」的组合转换成你需要的对象格式,最终得到包含所有统计条目的数组。

运行这段代码后,控制台会输出你期望的格式示例:

[
  { Geo: "US East", LeadStage: "SGL", count: 6 },
  { Geo: "US East", LeadStage: "MGL", count: 2 },
  { Geo: "US West", LeadStage: "SGL", count: 2 },
  { Geo: "US West", LeadStage: "RGL", count: 1 },
  { Geo: "NSU", LeadStage: "MGL", count: 1 },
  { Geo: "NSU", LeadStage: "SGL", count: 2 }
]

如果你不想依赖jQuery,也可以把$.each换成原生JS的forEach,效果完全一致:

// 原生JS版本的分组函数
function groupByGeoAndLeadStage(arr) {
  var groupBy = {};
  arr.forEach(function(item) {
    if (!groupBy[item.Geo]) {
      groupBy[item.Geo] = {};
    }
    groupBy[item.Geo][item.LeadStage] = 1 + (groupBy[item.Geo][item.LeadStage] || 0);
  });
  return groupBy;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 11:32:30