可以使用reduce()方法来实现数组对象的合并和字符串的拼接。首先,我们需要根据id属性将数组对象分组,然后对每个分组进行求和并拼接字符串。

下面是一个示例代码:

const arr = [
  { id: 1, num: 2, scanCode: 'A' },
  { id: 1, num: 3, scanCode: 'B' },
  { id: 2, num: 4, scanCode: 'C' },
  { id: 2, num: 5, scanCode: 'D' },
  { id: 3, num: 6, scanCode: 'E' }
];

const mergedArr = arr.reduce((acc, obj) => {
  const existingObj = acc.find(item => item.id === obj.id && item.scanCode === obj.scanCode);
  if (existingObj) {
    existingObj.num += obj.num;
  } else {
    acc.push(obj);
  }
  return acc;
}, []);

const result = mergedArr.reduce((acc, obj) => {
  if (acc[obj.id]) {
    acc[obj.id] += `,${obj.scanCode}`;
  } else {
    acc[obj.id] = obj.scanCode;
  }
  return acc;
}, {});

console.log(result);

运行以上代码,将会输出如下结果:

{ 1: 'A,B', 2: 'C,D', 3: 'E' }

在上面的代码中,首先我们使用reduce()方法对数组对象进行合并,将相同id和scanCode的对象的num相加。然后,再次使用reduce()方法对合并后的数组对象进行遍历,将相同id的scanCode使用逗号进行拼接,最终得到一个以id为键,scanCode字符串为值的对象

js 数组对象根据id合并相同对象相同num相加并scanCode字符串拼接用分割

原文地址: https://www.cveoy.top/t/topic/ixBG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录