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

JavaScript对比两个对象数组 更新匹配对象及Total总计数

实现方案

原代码存在3个核心问题:

  • 遍历arr2做map返回的结果长度和arr2一致,会丢失arr1中的Total项
  • Array.filter的回调需要返回布尔值判断元素是否保留,原代码在回调里写三元返回对象、数值,不符合API用法
  • 没有实现Total项的总计数累加逻辑,也没有保留原数组项的text字段

可以按下面的逻辑实现:

  1. 先把arr2转成状态对应计数的映射表,提升匹配效率
  2. 提前累加arr2所有项的count得到总计数
  3. 遍历原数组arr1,Total项直接赋值总计数,其余项匹配映射表中的count更新即可

完整代码:

// 生成status到count的快速查找映射
const statusCountMap = new Map(arr2.map(i => [i.status, i.count]))
// 计算所有非Total项的计数总和
const total = arr2.reduce((acc, cur) => acc + cur.count, 0)

const finalResult = arr1.map(item => {
  if (item.status === 'Total') {
    return { ...item, count: total }
  }
  return {
    ...item,
    count: statusCountMap.get(item.status) ?? item.count
  }
})

运行后得到的结果和预期完全一致:

[
  {status: 'Total', count: 30, text: 'Total applications'},
  {status: 'submitted', count: 20, text: 'Applications submitted'},
  {status: 'Rejected', count: 10, text: 'Applications rejected'}
]

如果后续arr2里存在arr1没有的status项,也可以根据业务需求在遍历完arr1后追加对应项即可,当前逻辑完全覆盖题目给出的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 09:36:27