js 数组对象根据id合并相同对象相同num相加并scanCode字符串拼接用分割
可以使用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字符串为值的对象
原文地址: https://www.cveoy.top/t/topic/ixBG 著作权归作者所有。请勿转载和采集!