You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据指定键数组过滤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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:16:49