You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Javascript中如何通过公共ID字段关联合并两个JSON数组

最优实现方案

性能最优的方案不是循环加filter,而是先将JSON B转换为company_id为键的哈希映射(JS中可直接用Map或普通对象),再遍历JSON A完成匹配,整体时间复杂度为O(n + m)(n为JSON A长度,m为JSON B长度),远优于循环加filter的O(n*m)复杂度。

方案原理

  1. 一次性遍历JSON B生成映射表,仅需O(m)时间
  2. 遍历JSON A时,直接通过键值查找获取公司名,单次查找时间为O(1),总遍历时间为O(n)
  3. 即使JSON A存在大量相同company_id的元素,也无需重复查找JSON B,匹配效率不会下降

代码实现(适配现代JS/Vue环境)

// 第一步:生成公司ID到名称的映射
const companyMap = new Map(jsonB.map(item => [item.company_id, item.name]))

// 第二步:合并生成JSON C,可添加兜底值处理未匹配到公司的场景
const jsonC = jsonA.map(order => ({
  ...order,
  company_name: companyMap.get(order.company_id) ?? '未知公司'
}))

为什么不推荐循环加filter?

循环加filter的写法每处理一条JSON A的记录,都需要遍历一次完整的JSON B数组,当两个数组长度都达到千级以上时,运算量会暴涨到百万级,性能会出现明显下降,仅适合数据量极小的临时场景。

内容的提问来源于stack exchange,提问作者Andrea Bruno Brunato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 09:12:02