ES6 Map的Array.map相当于什么?

Ben*_*Ben 1 javascript ecmascript-6

所以我可以调用map()一个数组来迭代它并返回另一个数组,如下所示:

[1,2,3].map( (value, index) => value * index )
Run Code Online (Sandbox Code Playgroud)

如果我想在Map对象上做同样的事情怎么办?

var myMap = new Map();
myMap.set(0, 1);
myMap.set(1, 2);
myMap.set(2, 3);
Run Code Online (Sandbox Code Playgroud)

这是无效的:

myMap.map( (value, index) => value * index )
Run Code Online (Sandbox Code Playgroud)

有一个forEach,但那不一样.

是否有一种从a生成数组的快速简写方法Map,就像map()在数组上一样?

- 希望这句话有道理.

zer*_*kms 10

如果结果必须是数组,那么您可以使用Array.from()Map.prototype.entries():

Array.from(myMap.entries()).map(([key, value]) => key * value)
Run Code Online (Sandbox Code Playgroud)

或者你可以传播迭代器:

[...myMap.entries()].map(...)
Run Code Online (Sandbox Code Playgroud)

  • Map.map应该完全符合规范 (2认同)