基于唯一Device_MAC键合并多组对象数组生成结果集的实现方法
基于
Device_MAC的多数组关联合并实现 - 先将两个统计类数组转换为以
Device_MAC为键的映射对象,将嵌套查找的时间复杂度从O(n*m)降到O(n),数据量越大性能优势越明显 - 遍历基础设备数组,逐个从映射对象中读取对应统计值,无匹配时给统计字段默认值0
- 按需求完成字段映射转换:源统计数组的
Completed对应结果的Complete、Incompleted对应结果的Incomplete,同时完成设备型号的替换
// 生成完成量映射表 const completedMap = CompletedArray.reduce((acc, cur) => { acc[cur.Device_MAC] = cur.Completed return acc }, {}) // 生成未完成量映射表 const incompletedMap = IncompletedArray.reduce((acc, cur) => { acc[cur.Device_MAC] = cur.Incompleted return acc }, {}) // 整合生成最终结果 const Result = Devices.map(device => { const mac = device.Device_MAC return { Device_MAC: mac, // 按需求将原Model 1替换为K Lite,无需替换可直接取device.Device_Model Device_Model: device.Device_Model === 'Model 1' ? 'K Lite' : device.Device_Model, Date: device.Date, Total: device.Total, Complete: completedMap[mac] ?? 0, Incomplete: incompletedMap[mac] ?? 0 } })
若需兼容不支持空值合并运算符
??的老旧环境,可将取值逻辑替换为completedMap[mac] || 0、incompletedMap[mac] || 0
内容的提问来源于stack exchange,提问作者Dhaval Darji
相关产品推荐
相关产品推荐

