javascript - 如何从地图中删除特定值
问题描述
我有一张这样的地图:
我想{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
解决方案
您可以遍历Map
和filter
每个值以删除frequency
包含在strNanFrq
. 创建一个Set
forstrNanFrq
并检查是否设置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))
推荐阅读
- cakephp - Cakephp - 禁用 CSRF 以在 android 应用程序中使用 api
- python-3.x - 在发送到 SageMaker TF Serving 之前压缩图像
- r - 对于每个主题多行的数据,将纵向值重塑为宽值
- c# - Facebook 密码更改,使用 C#
- java - JDBC 模板运行缓慢
- visual-studio - VS 2017 - NuGet Manager 不添加引用
- python - Numpy数组有头尾方法吗?
- node.js - 为什么 formData 不适用于多个文件?
- mysql - 组合多个表生成视图
- cmake - cmake find_program 命令找不到 lib.exe