如何实现jQuery数组按双元素分组并计算总和?
双字段数组分组解决方案(基于jQuery .each()方法)
没问题!要实现双字段分组其实只需要把两个字段组合成一个唯一的分组键就行,咱们基于你提到的@jfriend00的.each()方法来调整,非常容易上手。
先看示例场景
假设你的原始数组是这样的(我模拟了一个和需求匹配的结构):
const rawData = [ { department: 'Tech', team: 'Frontend', name: 'Alice' }, { department: 'Tech', team: 'Frontend', name: 'Bob' }, { department: 'HR', team: 'Recruitment', name: 'Charlie' }, { department: 'Tech', team: 'Backend', name: 'David' }, { department: 'HR', team: 'Recruitment', name: 'Eve' } ];
修改后的双字段分组代码
// 初始化分组结果对象 const groupedResult = {}; // 用jQuery .each()遍历数组 $.each(rawData, function(_, item) { // 核心:把两个分组字段拼接成唯一键(用|做分隔符,避免字段值冲突) const groupKey = `${item.department}|${item.team}`; // 如果当前键不存在,就初始化一个空数组 if (!groupedResult[groupKey]) { groupedResult[groupKey] = []; } // 把当前项推入对应分组的数组 groupedResult[groupKey].push(item); }); // (可选)把拼接键的结构转换成更友好的格式 const formattedGroup = Object.entries(groupedResult).map(([key, members]) => { // 拆分键还原成两个字段 const [department, team] = key.split('|'); return { department, team, members }; }); console.log(formattedGroup);
关键逻辑说明
- 生成唯一分组键:把两个需要分组的字段用一个不会出现在字段值里的分隔符(比如
|)拼接,确保每一组双字段组合都对应唯一的键。 - 兼容原单字段逻辑:后续的判断数组是否存在、推入元素的逻辑和你之前用的单字段分组完全一致,只是键的生成方式变了。
- 处理特殊情况:如果你的字段值里可能包含
|,可以改用JSON.stringify([item.field1, item.field2])生成键,虽然性能略低,但能彻底避免冲突:const groupKey = JSON.stringify([item.department, item.team]);
这样调整后,就能完美实现你要的双字段分组效果啦!
内容的提问来源于stack exchange,提问作者NewBee
相关产品推荐
相关产品推荐

