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

如何按两个属性对对象数组分组并合并price数组

按两个属性分组并合并对象数组的解决方案

可以通过临时映射对象的方式实现,核心思路是用index与name的组合值作为唯一标识,将相同标识的对象的price数组合并,最终提取映射对象的值得到目标数组。

实现代码

const originalArray = [
    { index: 4, name: "car", price: [10,20,30] },
    { index: 4, name: "car", price: [40,50,60] },
    { index: 3, name: "bike", price: [40,50,60] },
    { index: 2, name: "scooter", price: [10,20,60] },
    { index: 2, name: "scooter", price: [70] }
];

const groupMap = {};

originalArray.forEach(item => {
    // 生成唯一分组键,确保index和name都相同时归为一组
    const key = `${item.index}-${item.name}`;
    if (!groupMap[key]) {
        // 首次遇到该分组时,初始化对象(展开原对象避免引用关联)
        groupMap[key] = { ...item, price: [...item.price] };
    } else {
        // 已有分组时,合并price数组(顺序可根据需求调整)
        groupMap[key].price = [...item.price, ...groupMap[key].price];
    }
});

// 将映射对象的所有值转为数组,得到最终结果
const resultArray = Object.values(groupMap);

console.log(resultArray);

说明

  • 分组键采用index-name的拼接形式,确保只有当两个属性完全相同时才会被归为同一组
  • 使用扩展运算符...复制对象和数组,避免后续操作修改原数据
  • 合并price数组的顺序可按需调整:如果需要保留原数组的先后顺序,改为[...groupMap[key].price, ...item.price]即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:51:10