Javascript - 将 Map 对象的所有键设置为一个值

Stu*_*t22 1 javascript

我在这里有这个代码:

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
Run Code Online (Sandbox Code Playgroud)

我想将 this 的所有值都设置Mapfalse,但它根本不起作用。

我试过这样的事情:

Object.keys(myMap).forEach(key => myMap[key] = false)
Run Code Online (Sandbox Code Playgroud)

但这也不起作用。

有没有办法将 a 的所有键填充Map为特定

Shi*_*rsz 7

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")
);
Run Code Online (Sandbox Code Playgroud)
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
Run Code Online (Sandbox Code Playgroud)

在每个元素上调用的回调的文档 fromMDN说:

该方法对实际存在的映射的每个键forEach执行一次提供的方法。callback对于已删除的键,不会调用它。但是,它是针对存在但未定义值的值执行的。使用callback三个参数调用:

  • 元素value
  • 元素key
  • Map被遍历的对象


Cer*_*nce 5

您必须专门调用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"));
Run Code Online (Sandbox Code Playgroud)