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

如何在两个数组匹配到对应值时替换目标数组的对应数据

实现方案

实现思路

  • 先将array2转换为以日期值为键的映射结构,避免后续匹配时重复遍历数组,大幅提升执行效率
  • 遍历array1的每一项,检查当前项的日期是否存在于映射中,存在则直接替换count值即可

代码实现(ES6+ 推荐)

// 构建日期和count的映射表
const dateCountMap = new Map(array2.map(item => [item.Dates, item.count]));

// 方式1:生成新数组,不修改原array1
const replacedArray = array1.map(item => {
  return dateCountMap.has(item.Dates) 
    ? {...item, count: dateCountMap.get(item.Dates)} 
    : item;
});

// 方式2:直接修改原array1,无需返回新数组
array1.forEach(item => {
  if (dateCountMap.has(item.Dates)) {
    item.count = dateCountMap.get(item.Dates);
  }
});

方案说明

  • 该方案时间复杂度为O(n+m)(n为array1长度,m为array2长度),比双重循环匹配的O(n*m)效率高很多,数组长度越大优势越明显
  • 若需要兼容低版本不支持ES6语法的环境,可以用普通对象替代Map实现映射功能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 09:54:00