JavaScript 数组对象合并:根据 ID 合并相同对象并累加 num,拼接 scanCode 字符串
可以使用reduce()方法来实现数组对象的合并和字符串的拼接。首先,我们需要根据id属性将数组对象分组,然后对每个分组进行求和并拼接字符串。\n\n下面是一个示例代码:\n\njavascript\nconst arr = [\n { id: 1, num: 2, scanCode: 'A' },\n { id: 1, num: 3, scanCode: 'B' },\n { id: 2, num: 4, scanCode: 'C' },\n { id: 2, num: 5, scanCode: 'D' },\n { id: 3, num: 6, scanCode: 'E' }\n];\n\nconst mergedArr = arr.reduce((acc, obj) => {\n const existingObj = acc.find(item => item.id === obj.id && item.scanCode === obj.scanCode);\n if (existingObj) {\n existingObj.num += obj.num;\n } else {\n acc.push(obj);\n }\n return acc;\n}, []);\n\nconst result = mergedArr.reduce((acc, obj) => {\n if (acc[obj.id]) {\n acc[obj.id] += `,${obj.scanCode}`;\n } else {\n acc[obj.id] = obj.scanCode;\n }\n return acc;\n}, {});\n\nconsole.log(result);\n\n\n运行以上代码,将会输出如下结果:\n\njavascript\n{ 1: 'A,B', 2: 'C,D', 3: 'E' }\n\n\n在上面的代码中,首先我们使用reduce()方法对数组对象进行合并,将相同id和scanCode的对象的num相加。然后,再次使用reduce()方法对合并后的数组对象进行遍历,将相同id的scanCode使用逗号进行拼接,最终得到一个以id为键,scanCode字符串为值的对象。
原文地址: https://www.cveoy.top/t/topic/qeT4 著作权归作者所有。请勿转载和采集!