如何将多个Map组成的JS数组合并为单个Map?
合并多个Map的通用方案
针对你拥有的包含多个Map的数组(所有键不重复),这里提供两种通用的合并方法:
方法1:使用flatMap+扩展运算符
通过flatMap将每个Map转换为键值对数组并扁平化,再传入Map构造函数生成合并后的Map:
const mapArray = [new Map([['a', 1]]), new Map([['b', 2]]), new Map([['c', 3]]), new Map([['d', 4]])]; const mergedMap = new Map(mapArray.flatMap(map => [...map]));
方法2:使用reduce累积合并
利用reduce的累积特性,从空Map开始,逐个合并数组中的每个Map:
const mapArray = [new Map([['a', 1]]), new Map([['b', 2]]), new Map([['c', 3]]), new Map([['d', 4]])]; const mergedMap = mapArray.reduce((acc, curr) => new Map([...acc, ...curr]), new Map());
两种方法都适用于任意长度的Map数组,因为你提到所有键不重复,所以无需处理键冲突覆盖的问题。
内容的提问来源于stack exchange,提问作者Uladzislau Kaminski
相关产品推荐
相关产品推荐

