如何在 JavaScript 中过滤 Map

使用 forEach() 方法在 JavaScript 中过滤 Map。 使用 Map 中的每个键值对调用该方法,我们可以在其中检查条件并使用 delete() 方法删除我们想要过滤掉的任何 Map 元素。

const map1 = new Map([
  ['num1', 1],
  ['num2', 2],
  ['num3', 3],
]);

map1.forEach((value, key) => {
  if (value > 1) {
    map1.delete(key);
  }
});

// 👇️ {'num1' => 1}
console.log(map1);

我们使用 Map.forEach 方法迭代 Map 对象。

我们传递给 forEach() 方法的函数会为 Map 的每个键值对调用,并传递以下参数:

  • value – 迭代的值
  • key – 迭代的关键
  • map – 地图对象

我们使用 value 来检查条件,并使用 key 来删除 Map 中不需要的任何元素。

另一种方法是将 Map 方法转换为数组并使用 filter 方法。

在 JavaScript 中过滤Map:

  1. 将 Map 转换为数组。
  2. 使用 filter() 方法遍历数组。
  3. 排除不符合条件的元素。
  4. 将数组转换回 Map。
const map1 = new Map([
  ['num1', 1],
  ['num2', 2],
  ['num3', 3],
]);

const filtered = new Map(
  Array.from(map1).filter(([key, value]) => {
    if (value > 1) {
      return true;
    }

    return false;
  }),
);

// 👇️ {'num2' => 2, 'num3' => 3}
console.log(filtered);

我们使用 Array.from 方法将 Map 转换为键值对数组。

const map1 = new Map([
  ['num1', 1],
  ['num2', 2],
  ['num3', 3],
]);

// 👇️ [['num1', 1], ['num2', 2], ['num3', 3]]
console.log(Array.from(map1));

当我们将 Map 转换为数组时,我们会得到一个二维数组,我们可以在该数组上调用 filter 方法。

每个子数组中的第一个元素是键,第二个元素是对应的值。

我们使用解构赋值来解构我们传递给过滤器方法的回调函数中的键和值。

const [key, value] = ['num1', 1];
console.log(key); // 👉️ num1
console.log(value); // 👉️ 1

在回调函数中,我们检查一个条件,如果条件满足则返回 true,否则返回 false

filter 方法返回一个仅包含元素的新数组,回调函数为其返回一个真值。

最后一步是使用 Map() 构造函数将数组转换回 Map。

免责声明:
1.本站所有内容由本站原创、网络转载、消息撰写、网友投稿等几部分组成。
2.本站原创文字内容若未经特别声明,则遵循协议CC3.0共享协议,转载请务必注明原文链接。
3.本站部分来源于网络转载的文章信息是出于传递更多信息之目的,不意味着赞同其观点。
4.本站所有源码与软件均为原作者提供,仅供学习和研究使用。
5.如您对本网站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。
火焰兔 » 如何在 JavaScript 中过滤 Map