JavaScript:合并数组重复元素并对价格值求和
解决方案
可以通过对象分组+求和的方式实现需求,核心思路是用临时对象存储每个产品的累计价格,最后再转换回目标数组格式。
实现代码
var products = [["product_1", 6, "hamburger"],["product_2", 10, "cola"],["product_2", 7, "cola"], ["product1", 4, "hamburger"]]; // 按产品名称(第三个元素)分组,匹配你的期望结果 const grouped = {}; products.forEach(item => { const key = item[2]; // 用产品名称作为分组依据 if (grouped[key]) { // 已有该产品分类,累加价格 grouped[key][1] += item[1]; } else { // 首次出现该分类,存入对象并保留产品ID grouped[key] = [...item]; } }); // 将分组对象转换为目标数组格式 const result = Object.values(grouped); console.log(result); // 输出:[["product_1", 10, "hamburger"],["product_2", 17, "cola"]]
代码说明
- 分组依据:选择数组第三个元素(产品名称)作为分组键,正好处理了输入中
product1和product_1同属汉堡的情况,匹配你的期望结果。 - 求和逻辑:遍历原数组时,若当前产品分类已存在则累加价格,不存在则初始化分组并存入完整条目。
- 格式转换:通过
Object.values()提取分组对象的所有值,直接得到目标二维数组。
内容的提问来源于stack exchange,提问作者Viktor
相关产品推荐
相关产品推荐

