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

如何按paymentId合并对象数组的label并生成指定格式输出?

合并相同paymentId的label字段实现方案

可以利用JavaScript的Array.prototype.reduce()方法实现分组合并,具体代码如下:

原数据

const originalArray = [
  {
    label: 'General-A-5',
    paymentId: 1,
  },
  {
    label: 'General-A-4',
    paymentId: 1,
  },
  {
    label: 'General-A-3',
    paymentId: 2,
  }
];

实现代码

const mergedArray = originalArray.reduce((acc, current) => {
  // 查找当前paymentId对应的已有分组
  const existingItem = acc.find(item => item.paymentId === current.paymentId);
  if (existingItem) {
    // 存在则用英文逗号拼接label
    existingItem.label += `,${current.label}`;
  } else {
    // 不存在则新增分组项(用扩展运算符避免原对象引用问题)
    acc.push({ ...current });
  }
  return acc;
}, []);

console.log(mergedArray);

输出结果

[
  {
    label: 'General-A-5,General-A-4',
    paymentId: 1,
  },
  {
    label: 'General-A-3',
    paymentId: 2,
  }
]

逻辑说明

  • 用reduce遍历原数组,累加器acc用来存储分组后的结果数组
  • 每遍历一项,检查当前paymentId是否已在累加器中存在对应项:
    • 存在则直接拼接label字段
    • 不存在则将当前对象的副本推入累加器
  • 最终得到的mergedArray即为符合需求的结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 12:07:06