JavaScript 中按字段对嵌套对象数组进行分组的实用教程

本文详解如何将嵌套在 keyResults 和 metrics 中的对象,按 product 字段统一归类,生成结构清晰、按产品聚合的新对象数组,适用于数据聚合、报表生成等典型场景。 本文详解如何将嵌套在 `keyresults` 和 `metrics` 中的对象,按 `product` 字段统一归类,生成结构清晰、按产品聚合的新对象数组,适用于数据聚合、报表生成等典型场景。在实际开发中,常需将分散在多个子数组(如 keyResults、metrics)中的对象,依据某个公共字段(如 product)进行逻辑分组,并保持原始结构语义------即每个产品对应独立的 keyResults 和 metrics 子数组。这并非简单的数组扁平化或排序,而是跨字段的键驱动聚合(key-based cross-array grouping)。核心思路是:? 遍历所有目标子数组(keyResults 和 metrics);? 提取每项的 product 值作为分组键;? 使用普通对象({})作为临时哈希表,以 product 为 key 存储分组结果;? 每次遇到新 product 时初始化其结构(含空 keyResults 和 metrics 数组);? 将当前项推入对应 product 下的对应子数组;? 最终通过 Object.values() 转为标准数组,消除键名依赖,符合预期输出格式。以下为完整可运行实现:const a = { products: { keyResults: { leader: "Aaron", product: "Product 1" }, { leader: "Addie", product: "Product 1" }, { leader: "Mindy", product: "Product 1" }, { leader: "Wiley", product: "Product 2" } , metrics: { leader: "Aaron", product: "Product 1" }, { leader: "Wiley", product: "Product 2" } }};// 步骤 1:创建分组哈希表const groupedByProduct = {};// 步骤 2:遍历 keyResults 和 metrics 两个字段for (const category of 'keyResults', 'metrics') { const items = a.productscategory; if (!Array.isArray(items)) continue; for (const item of items) { const productId = item.product; // 若该 product 尚未初始化,则创建默认结构 if (!groupedByProductproductId) { groupedByProductproductId = { product: productId, keyResults: \[\], metrics: \[\] }; } // 将当前 item 推入对应 category 的子数组 groupedByProductproductIdcategory.push(item); }}// 步骤 3:转换为 products 数组const b = { products: Object.values(groupedByProduct)};console.log(b);// 输出结构完全匹配预期:每个 product 对应独立的 keyResults/metrics 数组? 关键注意事项: Mokker AI AI产品图添加背景

相关推荐
Lumistory10 分钟前
城市建筑照明的落地与长效运营观察
大数据·数据库·中间件·光照贴图
jufeng13072 小时前
【系列:手搓自主 AI Agent:Hermes 架构原理剖析 · 第 11 篇】
python·ai agent·mcp
En^_^Joy2 小时前
Django项目配置全攻略:settings配置文件
后端·python·django
for_ever_love__3 小时前
python基础语法学习: 异常的传递性
开发语言·python·学习
围炉聊科技3 小时前
长期免费的数据库方案——零成本基建系列
数据库
AC赳赳老秦3 小时前
公开图片 OCR 数据提取:OpenClaw 合规采集公开信息图,识别文字与表格并转化为结构化数据
java·大数据·前端·数据库·python·php·openclaw
java_upp4 小时前
JVM内存溢出和内存泄漏的区别及排查方法
jvm·内存泄漏·内存溢出
麻雀飞吧4 小时前
零基础选量化工具,先把问题说清楚
人工智能·python
段一凡-华北理工大学4 小时前
AI推动工业智能化转型~系列文章20:工业 AI 平台架构:云-边-端协同的技术体系
人工智能·python·架构·工业平台·云-边协同