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

如何按pure_id字段对多组对象数组进行分组?

嘿,这个按pure_id字段分组的需求其实挺常见的,我给你分享几个JavaScript里靠谱的实现方案,肯定能解决你的问题:

方法一:使用Array.prototype.reduce()(最经典高效)

这是处理数组分组最常用的方式,代码简洁且性能出色:

// 你的原始数组
const originalArray = [
  {"pure_id":"1","branch_id":"45"},
  {"pure_id":"2","branch_id":"45"},
  {"pure_id":"3","branch_id":"45"},
  {"pure_id":"3","branch_id":"45"}
];

// 用reduce实现分组
const groupedByPureId = originalArray.reduce((accumulator, currentItem) => {
  // 提取当前项的pure_id作为分组键
  const groupKey = currentItem.pure_id;
  
  // 如果累加器里还没有这个分组,就初始化一个空数组
  if (!accumulator[groupKey]) {
    accumulator[groupKey] = [];
  }
  
  // 将当前项推入对应的分组数组
  accumulator[groupKey].push(currentItem);
  
  return accumulator;
}, {}); // 初始值设为空对象

console.log(groupedByPureId);

运行这段代码后,你会得到完全符合预期的结果:以pure_id为键,对应值是同pure_id的对象数组。

方法二:使用ES6 Map + Object.fromEntries()

如果你更喜欢用ES6的Map结构来管理分组,这种方式逻辑更清晰:

const originalArray = [
  {"pure_id":"1","branch_id":"45"},
  {"pure_id":"2","branch_id":"45"},
  {"pure_id":"3","branch_id":"45"},
  {"pure_id":"3","branch_id":"45"}
];

// 初始化一个Map来存储分组
const groupMap = new Map();

originalArray.forEach(item => {
  const key = item.pure_id;
  // 如果Map中没有该键,就创建一个空数组
  if (!groupMap.has(key)) {
    groupMap.set(key, []);
  }
  // 将当前项加入对应分组
  groupMap.get(key).push(item);
});

// 把Map转换为普通对象(和reduce的输出格式一致)
const groupedByPureId = Object.fromEntries(groupMap);

console.log(groupedByPureId);

方法三:原生Array.prototype.group()(ES2023+)

如果你的运行环境支持ES2023及以上版本(比如现代浏览器、Node.js 21+),可以用原生的分组方法,代码极简:

const groupedByPureId = originalArray.group(item => item.pure_id);

不过要注意兼容性,如果需要兼容旧环境,可能需要添加polyfill或者转译工具处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:59:46