如何按id匹配将obj1的value与obj2的percent相乘得到目标对象数组
实现方案
最优实现的核心思路是先构造id到percent的映射表,减少后续匹配时的重复遍历开销,整体时间复杂度为O(n),数据量越大性能优势越明显,代码如下:
// 第一步:将obj2转换为id对应percent的查找映射,单次查找效率为O(1) const idPercentMap = Object.values(obj2).reduce((acc, cur) => { acc[cur.id] = cur.percent return acc }, {}) // 第二步:遍历obj1直接匹配计算得到结果 const output = obj1.map(({ id, value }) => ({ id, value: value * idPercentMap[id] }))
运行后output就是你给出的预期结果。
如果数据量非常小,不想单独做映射,也可以简化写为:
const output = obj1.map(({ id, value }) => ({ id, value: value * Object.values(obj2).find(item => item.id === id).percent }))
内容的提问来源于stack exchange,提问作者Avalanche
相关产品推荐
相关产品推荐

