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

如何检测二维数组相邻元素重复并合并累加对应位置数值

二维数组相邻重复项合并方案

实现思路

  • 先做边界判断:如果输入数组长度≤1,直接返回原数组即可,无需合并操作
  • 初始化结果数组,默认放入原数组的第一个元素作为比对基准
  • 从原数组下标1的位置开始遍历所有子数组:
    • 取出当前子数组的第一个元素,和结果数组末尾子数组的第一个元素做比对
    • 若两者相同:将当前子数组下标为2的数值,累加到结果数组末尾子数组的下标2位置
    • 若两者不同:直接将当前子数组推入结果数组即可

该方案仅需要单次遍历数组即可完成处理,时间复杂度为O(n),不需要额外维护重复项临时数组再做reduce累加,逻辑更简洁。

代码实现

function mergeAdjacentDuplicate(arr) {
  // 边界处理
  if (arr.length <= 1) return [...arr]
  const result = [[...arr[0]]]
  for (let i = 1; i < arr.length; i++) {
    const current = arr[i]
    const lastInResult = result[result.length - 1]
    if (current[0] === lastInResult[0]) {
      // 相邻第一项相同,累加第三项数值
      lastInResult[2] += current[2]
    } else {
      // 不相同直接推入新元素
      result.push([...current])
    }
  }
  return result
}

// 测试验证
var arr1 = [["Egypt","Grid",50],["Egypt","Grid",10],["Nigeria","Grid",20],["Ghana","Grid",60],["Egypt","Grid",30]]
var arr2 = mergeAdjacentDuplicate(arr1)
console.log(arr2)
// 输出结果和预期一致:[["Egypt","Grid",60],["Nigeria","Grid",20],["Ghana","Grid",60],["Egypt","Grid",30]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:54:04