如何根据指定键数组过滤JavaScript Map对象?
实现方法
嘿,这个需求很容易搞定,我给你分享几种实用的实现方式:
方法一:forEach 循环遍历数组
这是最直观的写法,逻辑清晰,新手也能一眼看懂:
const arr = ['var1', 'var2', 'var3']; const originalMap = new Map([ ['var1', 1], ['var2', 2], ['var3', 3], ['var4', 4] ]); const filteredMap = new Map(); arr.forEach(key => { // 先检查原Map里是否存在这个键,避免添加不存在的键 if (originalMap.has(key)) { filteredMap.set(key, originalMap.get(key)); } }); console.log(filteredMap); // 输出: Map(3) { 'var1' => 1, 'var2' => 2, 'var3' => 3 }
方法二:用 reduce 函数(更简洁的函数式写法)
如果你喜欢更紧凑的代码,Array.reduce() 可以一行完成过滤,非常优雅:
const arr = ['var1', 'var2', 'var3']; const originalMap = new Map([ ['var1', 1], ['var2', 2], ['var3', 3], ['var4', 4] ]); const filteredMap = arr.reduce((map, key) => { originalMap.has(key) && map.set(key, originalMap.get(key)); return map; }, new Map()); // 初始值是一个空的新Map console.log(filteredMap); // 同样得到目标结果
额外说明
- 两种方法都会自动忽略数组里原Map不存在的键(比如如果arr里有'var5',不会在新Map里添加这个键)
- Map的
has()方法用来判断键是否存在,get()获取对应的值,set()往新Map里添加键值对,都是Map的原生方法,兼容性很好
内容的提问来源于stack exchange,提问作者danielo
相关产品推荐
相关产品推荐

