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

如何以最优方式快速合并关联对象数组并映射添加状态字段

最优实现方案

核心思路

时间复杂度控制在O(M+N)(M为第二个数组长度,N为第一个数组长度),避免双重循环的O(M*N)低效率:

  • 先对第二个数组做预处理,生成id到状态的哈希映射表,一次遍历即可完成所有状态校验
  • 遍历第一个数组时直接通过哈希表O(1)查询对应状态,直接赋值即可

具体实现代码

// 1. 预处理第二个数组构建状态映射表
const statusMap = new Map();

secondData.changePoints.forEach(({ Point }) => {
  // 嵌套every遇到不符合条件的项会提前终止遍历,减少无效计算
  const allAvailable = Point.connectorGroups.every(group => 
    group.connectors.every(connector => connector.connectorStatus === 'AVAILABLE')
  );
  statusMap.set(Point.id, allAvailable ? 'AVAILABLE' : 'NOT AVAILABLE');
});

// 2. 给第一个数组批量赋值status字段
firstArray.forEach(item => {
  // 找不到对应id的场景默认设为NOT AVAILABLE,可根据业务需求调整默认值
  item.status = statusMap.get(item.id) ?? 'NOT AVAILABLE';
});

优势说明

  1. 性能足够冗余:哪怕两个数组后续扩容到十万级,该方案也不会出现性能瓶颈,你当前900余条数据的场景下执行耗时不到1毫秒
  2. 逻辑清晰易维护:状态校验和数组赋值逻辑拆分,后续修改判断规则只需要调整预处理部分的代码即可
  3. 提前终止校验:嵌套使用every方法,只要遇到任意一个非AVAILABLE的连接器就会停止当前id的状态判断,不需要遍历完所有连接器,进一步优化执行效率

内容的提问来源于stack exchange,提问作者Shubham Dhumal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:06:01