如何在JavaScript Map中按值分组生成对应子Map
按Map的Value拆分出多个子Map的解决方案
可以通过遍历主Map并按Value分组的方式实现,核心是用一个容器Map来管理每个Value对应的子Map,代码实现如下:
// 模拟API返回的动态数据创建主Map(注意JavaScript中Map首字母需大写) const mainMap = new Map(); // 填充示例数据 mainMap.set(1, 'a'); mainMap.set(2, 'b'); mainMap.set(3, 'c'); mainMap.set(4, 'a'); mainMap.set(5, 'c'); mainMap.set(6, 'b'); mainMap.set(7, 'c'); mainMap.set(8, 'a'); mainMap.set(9, 'c'); mainMap.set(10, 'c'); mainMap.set(11, 'a'); mainMap.set(12, 'c'); mainMap.set(13, 'a'); mainMap.set(14, 'c'); mainMap.set(15, 'c'); mainMap.set(16, 'e'); mainMap.set(17, 'f'); // 按Value分组创建子Map const groupedMaps = new Map(); for (const [key, value] of mainMap) { // 如果当前Value对应的子Map不存在,就新建一个 if (!groupedMaps.has(value)) { groupedMaps.set(value, new Map()); } // 将当前键值对添加到对应的子Map中 groupedMaps.get(value).set(key, value); } // 使用示例:获取Value为'a'的子Map const mapA = groupedMaps.get('a'); console.log(mapA); // 输出包含键1、4、8、11、13的Map // 遍历所有子Map for (const [value, subMap] of groupedMaps) { console.log(`Value为${value}的子Map:`, subMap); }
关键逻辑说明
- 用
groupedMaps作为分组容器,它的Key是原Map的Value,Value是对应分组的子Map - 遍历主Map时,先检查当前Value是否已有对应的子Map,没有则创建
- 把每个键值对追加到对应Value的子Map中,完成分组
内容的提问来源于stack exchange,提问作者DiggingCode
相关产品推荐
相关产品推荐

