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

如何通过银行卡号后4位匹配合并两个对象数组中的对应数据

数组同步匹配实现方案

实现思路

  • 先对数据源array2做预处理,生成以银行卡后四位为key、对应reissuedCard对象为value的哈希映射表,将查找效率优化到O(1),整体时间复杂度控制在O(n+m),远优于双层遍历的O(n*m)
  • 遍历目标数组array1,对每个对象用银行卡后四位匹配映射表,匹配成功则将对应reissuedCard属性追加到card对象中,匹配失败保持原数据不变
  • 代码中默认做了浅拷贝处理,不会修改原始数组数据,如有深拷贝需求可自行替换拷贝逻辑

完整实现代码

// 1. 预处理array2生成映射表
const reissuedCardMap = new Map();
array2.forEach(item => {
  // 过滤无效数据
  if (item?.reissuedCard?.lastFour) {
    reissuedCardMap.set(item.reissuedCard.lastFour, item.reissuedCard);
  }
});

// 2. 遍历array1生成结果
const result = array1.map(originItem => {
  // 浅拷贝避免修改原数组
  const newItem = {
    card: {...originItem.card}
  };
  const lastFour = originItem.card.lastNumbers;
  // 匹配到补卡信息则追加属性
  if (reissuedCardMap.has(lastFour)) {
    newItem.card.reissuedCard = reissuedCardMap.get(lastFour);
  }
  return newItem;
});

console.log(result);

扩展说明

如果业务场景中存在多个array2项匹配同一个银行卡后四位的情况,可将映射表value调整为数组,匹配时追加所有符合条件的reissuedCard即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:45:05