首页 > 解决方案 > 如何从地图中删除特定值

问题描述

我有一张这样的地图:

我想{frequency:"WN"}从地图值内的数组中删除。

我试图以这种方式删除它,但价值没有被删除:

const map2 = new Map();
map2.set(0, [{frequency:"DN"},{frequency:"WN"}, {frequency:"KK"}]);
map2.set(1, [{frequency:"DN"},{frequency:"WN"}, {frequency:"KK"}]);

const strNanFrq = ['DN', 'WN', 'MN', 'QN', 'YN'];
for (tsRequest of map2.values()) {
  tsRequest.filter((req, index) => {
    if (strNanFrq.includes(req['frequency'])) {
      tsRequest.splice(index, 1);
    }
  });
}

console.log(Array.from(map2.values())); // still has all the values in map

标签: javascripttypescript

解决方案


您可以遍历Mapfilter每个值以删除frequency包含在strNanFrq. 创建一个SetforstrNanFrq并检查是否设置has了当前对象的频率。

const map = new Map([
  [0, [{ frequency:"DN" },{ frequency:"WN" }, { frequency:"KK" } ]],
  [1, [{ frequency:"YN" },{ frequency:"AA" }, { frequency:"BB" } ]],
]);

const strNanFrq = new Set(['DN', 'WN', 'MN', 'QN', 'YN']);

for (const [key, value] of map)
  map.set(key, value.filter(v => !strNanFrq.has(v.frequency)))

console.log(map.get(0))
console.log(map.get(1))


推荐阅读