本文详解如何将嵌套在 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产品图添加背景
相关推荐
babe小鑫4 分钟前
生物统计学专业校招:SAS、R、Python学习顺序实用指南vx_Biye_Design7 分钟前
springboot游泳馆系统93765-计算机课程设计、毕业设计固定资产管理系统软件23 分钟前
该去哪里找专业靠谱的智慧智能设备固定资产管理系统?ctlover34 分钟前
LangChain 概述专业程序开发源39 分钟前
springbootLivehouse票务系统-计算机课程设计、毕业设计李高钢40 分钟前
Python Django 框架入门:从零搭建你的第一个 Web 应用笃行35044 分钟前
SQLServer数据库迁移实录:十年老系统搬上 KingbaseES,T-SQL 基本没重写2601_966949651 小时前
从轮询到策略消费:量化系统如何高效处理五档盘口数据萧鼎1 小时前
2026实战:用 accelerate 库加速 PyTorch 训练,核心语法与避坑指南我命由我123451 小时前
人脸识别 - 去重时间窗口