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

JavaScript如何对平行数组重复项去重并按顺序累加对应数值

实现方案

扩展原有去重逻辑的实现

你可以直接基于已写好的去重结果,新增映射表统计每个项的累计值,再按去重顺序生成最终结果:

const array1 = ['car', 'car', 'ball', 'piano', 'car'] 
const array2 = ['2500', '1000', '400', '2500', '4500']

// 原有去重逻辑
var uniqueValues = [];
for(var i in array1){
    if(uniqueValues.indexOf(array1[i]) === -1){
       uniqueValues.push(array1[i]);
    }
}

// 新增累加统计
const sumMap = {}
for (let i = 0; i < array1.length; i++) {
  const key = array1[i]
  const num = Number(array2[i])
  sumMap[key] = (sumMap[key] || 0) + num
}

// 生成最终结果
const resultArray1 = uniqueValues
const resultArray2 = uniqueValues.map(key => String(sumMap[key]))

打印结果验证:
resultArray1为 ['car', 'ball', 'piano']
resultArray2为 ['8000', '400', '2500']

更高性能的单次遍历实现

无需分开两次遍历数组,一次遍历同时完成去重和累加统计,数组长度较大时效率更高:

const array1 = ['car', 'car', 'ball', 'piano', 'car'] 
const array2 = ['2500', '1000', '400', '2500', '4500']

const resultArray1 = []
const sumMap = {}
for (let i = 0; i < array1.length; i++) {
  const key = array1[i]
  const num = Number(array2[i])
  // 首次出现时加入去重数组
  if (!sumMap.hasOwnProperty(key)) {
    resultArray1.push(key)
    sumMap[key] = 0
  }
  sumMap[key] += num
}
const resultArray2 = resultArray1.map(key => String(sumMap[key]))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:54:00