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

如何基于course、gradDate等多键组合对对象数组进行分组?

按多键组合分组对象数组

需要基于指定的键(如course、gradDate)的组合对对象数组进行分组,将具有相同键值组合的对象归为一组,最终得到分组后的数组用于循环生成用户报告。目前已能通过自定义函数获取各键的唯一值,但分组逻辑未实现。

解决方案代码

var uniqueKeys = ['course','gradDate'];

var dataSet = [
  {
    lastName:'Jones',
    course:'Standards',
    gradDate:'12/12/2022'
  },
  {    
    lastName:'Smith',
    course:'Standards',
    gradDate:'12/12/2022'
  },
  {
    lastName:'Martinez',
    course:'Maths',
    gradDate:'12/12/2022'
  },
  {
    lastName:'Santiago',
    course:'Photography',
    gradDate:'12/11/2022'
  },
  {
    lastName:'Alexi',
    course:'Photography',
    gradDate:'12/11/2022'
  }
];

// 按指定键组合分组的核心函数
function groupByKeys(data, keys) {
  return Object.values(data.reduce((groups, item) => {
    // 用指定键的组合生成唯一分组标识
    const groupKey = keys.map(key => item[key]).join('|');
    // 初始化分组并添加当前对象
    groups[groupKey] = groups[groupKey] || [];
    groups[groupKey].push(item);
    return groups;
  }, {}));
}

// 获取最终分组结果
var finalData = groupByKeys(dataSet, uniqueKeys);

代码说明

  • 核心逻辑依赖Array.reduce()遍历数据集,构建一个以键值组合字符串为键的分组对象,值为对应组的对象数组。
  • 用keys.map(key => item[key]).join('|')生成唯一标识,若键值本身包含|,可替换为其他无冲突分隔符(如###)。
  • 最后通过Object.values()提取分组对象的所有值,直接得到符合需求的二维数组结构。

运行结果

finalData的结构与预期完全一致:

[
    [{
            lastName: 'Jones',
            course: 'Standards',
            gradDate: '12/12/2022'
        },
        {
            lastName: 'Smith',
            course: 'Standards',
            gradDate: '12/12/2022'
        }
    ],
    [{
        lastName: 'Martinez',
        course: 'Maths',
        gradDate: '12/12/2022'
    }],
    [{
            lastName: 'Santiago',
            course: 'Photography',
            gradDate: '12/11/2022'
        },
        {
            lastName: 'Alexi',
            course: 'Photography',
            gradDate: '12/11/2022'
        }
    ]
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:45:39