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

如何合并x、y值相同的数组对象并累加对应g值,重新生成有序key

你之前使用Set的方案之所以失效,是因为你将整个对象序列化后去重,原数组所有对象的key、g属性均不相同,序列化结果全部唯一,无法实现按x、y分组的效果,同时Set本身也不支持属性累加的逻辑。

实现代码

let input = [
  { key: 0, x: 0, y: 0, g: 1 },
  { key: 1, x: 0, y: 0, g: 2 },
  { key: 2, x: 2, y: 0, g: 3 },
  { key: 3, x: 0, y: 0, g: 3 },
  { key: 4, x: 2, y: 2, g: 1 },
  { key: 5, x: 2, y: 2, g: 2 },
];

const groupMap = new Map();
input.forEach(item => {
  // 生成x、y组合的唯一分组标识
  const groupKey = `${item.x},${item.y}`;
  if (groupMap.has(groupKey)) {
    // 同分组累加g值
    groupMap.get(groupKey).g += item.g;
  } else {
    // 新增分组
    groupMap.set(groupKey, { x: item.x, y: item.y, g: item.g });
  }
});

// 转数组并重新分配顺序key
const result = Array.from(groupMap.values()).map((item, index) => ({
  key: index,
  ...item
}));

console.log(result);

运行输出

[
  { key: 0, x: 0, y: 0, g: 6 },
  { key: 1, x: 2, y: 0, g: 3 },
  { key: 2, x: 2, y: 2, g: 3 }
]

你给出的预期结果中第三条的x、y值为笔误,上述为正确运行结果。如果x、y值包含逗号这类特殊字符,可将分组key替换为JSON.stringify([item.x, item.y])避免分组冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:57:03