如何在 Javascript 中通过 Map 键使用 .map()

Ton*_*alo 9 javascript ecmascript-6 array.prototype.map

当使用Map内置的 Javascript 时,如何使用 .map() 来迭代键?

我知道 for...of 可以使用如下所示:

const map = new Map();

map.set(0, 'Zero');
map.set(1, 'One');
map.set(2, 'Two');

for (let key of map.keys()) {
  console.log(key);
}
Run Code Online (Sandbox Code Playgroud)

但这段代码会失败:

map.keys().map(key => {
  console.log(key);
});
Run Code Online (Sandbox Code Playgroud)

Cod*_*iac 6

Map.keys()返回一个迭代器,您可以使用扩展迭代器spread syntax

const map = new Map();

map.set(0, 'Zero');
map.set(1, 'One');
map.set(2, 'Two');

[...map.keys()].forEach(key => {
  console.log(key);
})
Run Code Online (Sandbox Code Playgroud)

  • 使用 for..of 时不需要扩展,因为它已经符合迭代器协议。 (2认同)

MrG*_*eek 4

实际上,它Array.prototype.map是为数组定义的,因此使用Array.from将其转换keys为数组,然后使用map

const map = new Map();

map.set(0, 'Zero');
map.set(1, 'One');
map.set(2, 'Two');

console.log(...Array.from(map.keys()).map(key => {
  return key ** 2; // square the keys
}));
Run Code Online (Sandbox Code Playgroud)