我在这里有此代码:
const myMap = new Map()
myMap.set("banana", true)
myMap.set("apple", true)
Object.keys(myMap).forEach(key => {myMap.set(key, false)})
console.log(myMap.get("banana")) // returns true should return false
console.log(myMap.get("apple")) // returns true should return false
我想将此Map
的所有值都设置为false
,但它根本不起作用。
我尝试过这样的事情:
Object.keys(myMap).forEach(key => myMap[key] = false)
但这也不起作用。
是否可以将Map
的所有键都填充到特定的值?
答案 0 :(得分:2)
您必须专门调用Map.set
才能在Map中设置值。 myMap[key] = value
仅适用于普通对象。您还应该使用myMap.keys()
来获取地图键的迭代器:
const myMap = new Map();
myMap.set("banana", true);
myMap.set("apple", true);
[...myMap.keys()].forEach((key) => {
myMap.set(key, false);
});
console.log(myMap.get("banana"));
console.log(myMap.get("apple"));
答案 1 :(得分:2)
Map有一个.forEach()方法可以遍历它,您可以在这种特殊情况下使用:
const myMap = new Map();
myMap.set("banana", true);
myMap.set("apple", true);
myMap.forEach((value, key, map) => map.set(key, false));
console.log(
"Banana:", myMap.get("banana"),
"Apple:", myMap.get("apple")
);
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
在MDN
中每个元素上调用的回调的文档说:
forEach
方法对地图中实际存在的每个键执行一次提供的callback
。对于已删除的密钥,不会调用它。但是,它针对存在但未定义的值执行。callback
用三个参数调用:
- 元素
value
- 元素
key
- 正在遍历的
Map
对象