如何按league_id分组重组多维数组,聚合用户信息?
按league_id分组数组并聚合用户信息的实现方法
实现思路
用一个临时对象做中间映射,以league_id为键聚合相同联赛的数据,最后把对象转换为目标数组即可。
代码实现(JavaScript)
const originalArray = [ { "league_id": 2, "league_name": "BBBB", "league_image": "https://d2ayu7u0r0spqb.cloudfront.net/dev/league-images/1722361078.png", "order_number": 1, "member_username": "A" }, { "league_id": 2, "league_name": "BBBB", "league_image": "https://d2ayu7u0r0spqb.cloudfront.net/dev/league-images/1722361078.png", "order_number": 2, "member_username": "B" }, { "league_id": 1, "league_name": "AAAA", "league_image": "https://d2ayu7u0r0spqb.cloudfront.net/dev/league-images/1724177635.png", "order_number": 1, "member_username": "C" }, { "league_id": 1, "league_name": "AAAA", "league_image": "https://d2ayu7u0r0spqb.cloudfront.net/dev/league-images/1724177635.png", "order_number": 2, "member_username": "D" } ]; // 创建临时映射对象 const leagueMap = {}; originalArray.forEach(item => { const { league_id, league_name, league_image, order_number, member_username } = item; // 如果当前联赛不在映射中,初始化结构 if (!leagueMap[league_id]) { leagueMap[league_id] = { league_id, league_name, league_image, users: [] }; } // 将用户信息推入对应联赛的users数组 leagueMap[league_id].users.push({ order_number, member_username }); }); // 将映射对象的值转换为数组,得到目标结果 const resultArray = Object.values(leagueMap); console.log(resultArray);
代码说明
- 临时对象
leagueMap的键是league_id,确保每个联赛只会被初始化一次 - 遍历原数组时解构字段,避免重复访问属性
- 最后用
Object.values()提取对象的所有值为数组,即可得到你需要的输出格式
内容的提问来源于stack exchange,提问作者Raman Kumar
相关产品推荐
相关产品推荐

