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

新手求助:如何用jQuery和AJAX将JSON结果集按层级分组到div中?

解决AJAX返回JSON按Subcategory分组的问题

嘿,作为AJAX和jQuery初学者,碰到这种分组问题太正常了,别着急!我来帮你搞定这个需求。首先明确你的目标:把返回的JSON数组按subcategory字段分组,每个分类下关联对应的subgroup列表对吧?

第一步:先梳理你的原始数据

你返回的JSON结构我先补全省略部分,大概是这样:

{
  "success": [
    {"id":8,"subcategory":"SubCategory 1","subgroup":"Subgroup 1"},
    {"id":9,"subcategory":"SubCategory 1","subgroup":"Subgroup 2"},
    {"id":10,"subcategory":"SubCategory 2","subgroup":"Subgroup 3"},
    {"id":11,"subcategory":"SubCategory 2","subgroup":"Subgroup 4"}
  ]
}

第二步:用jQuery实现分组逻辑

我们可以用jQuery的$.each()方法遍历数组,同时创建一个对象来存储分组结果——键是subcategory的值,值是对应分类下的subgroup数组:

// 假设AJAX请求返回的数据存在response变量里
var response = {"success":[{"id":8,"subcategory":"SubCategory 1","subgroup":"Subgroup 1"},{"id":9,"subcategory":"SubCategory 1","subgroup":"Subgroup 2"},{"id":10,"subcategory":"SubCategory 2","subgroup":"Subgroup 3"},{"id":11,"subcategory":"SubCategory 2","subgroup":"Subgroup 4"}]};

// 创建空对象存储分组结果
var groupedData = {};

// 遍历success数组
$.each(response.success, function(index, item) {
  var category = item.subcategory;
  // 如果当前分类还没在分组对象里,先初始化一个空数组
  if (!groupedData[category]) {
    groupedData[category] = [];
  }
  // 把当前的subgroup添加到对应分类的数组中
  groupedData[category].push(item.subgroup);
});

console.log(groupedData);

执行这段代码后,groupedData的结果就是你要的分组结构:

{
  "SubCategory 1": ["Subgroup 1", "Subgroup 2"],
  "SubCategory 2": ["Subgroup 3", "Subgroup 4"]
}

进阶调整:保留完整的条目对象

如果你不想只存subgroup,而是想保留每个条目的完整信息,只需要把push(item.subgroup)改成push(item)就行,这样每个分类下的数组就是该分类对应的所有原始对象了。

小补充:原生JS的简洁写法

如果你之后想拓展原生JS的能力,也可以用Array.reduce()方法实现,代码更紧凑:

var groupedData = response.success.reduce(function(result, item) {
  var category = item.subcategory;
  if (!result[category]) {
    result[category] = [];
  }
  result[category].push(item.subgroup);
  return result;
}, {});

不过既然你在学jQuery,先把$.each()的逻辑吃透就足够啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:33:58