本文详解如何将嵌套在 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产品图添加背景
相关推荐
玉鸯4 分钟前
Agent Hook:在概率推理之上,为 Agent 叠加确定性控制姜太小白27 分钟前
【MySQL】 索引优化实战:解决 WHERE 等值 + IS NULL 查询,TEXT 字段报错 1167 的完整指南weixin_4462608542 分钟前
HACO:面向动态部署环境的对冲式智能计算可靠多智能体调度框架窝子面1 小时前
手搓最简前后端协作-node我的xiaodoujiao1 小时前
API 接口自动化测试详细图文教程学习系列32--Allure测试报告2吳所畏惧1 小时前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?DFT计算杂谈1 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型qetfw1 小时前
MXU:Tauri 2 + React 的 MaaFramework 跨平台 GUI 源码HPFBoy1 小时前
log4net 数据库存日志正确配置liuxiaowei32 小时前
【绝版教程】新版MySQL DBA高级实战进阶班 MySQL8.0 姜承尧-腾讯数据库总监