2015-08-28 39 views
1

所以我可以叫map()阵列上通过它进行迭代,并返回另一个数组,像这样:什么是ES6 Map的Array.map等价物?

[1,2,3].map((value, index) => value * index) 

如果我想在Map object这样做?

var myMap = new Map(); 
myMap.set(0, 1); 
myMap.set(1, 2); 
myMap.set(2, 3); 

这是无效的:

myMap.map((value, index) => value * index) 

有一个foreach但是这是不一样的。

是否有一种快速简便的方法从Map生成数组,如map()对数组有效吗?

- 希望这句话很有意义。

+0

你还指望它返回?您接受一个键和一个索引,但只返回一个标量值。它应该是一个数组作为结果? – zerkms

+0

@zerkms与数组示例相同 - 遍历地图的每个元素并从映射的函数返回计算值的数组。结果数组应该与原始地图具有相同数量的元素。 – Ben

回答

8

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

Array.from(myMap.entries()).map(([key, value]) => key * value) 

另外,您可以spread迭代器:

[...myMap.entries()].map(...) 
+0

两者似乎都很好。第二个选项也很简单:) – Ben

+1

Map.map应完全在规格 – Ben

+0

@Ben它不明显什么类型应该返回然后 - 另一个地图或数组。 – zerkms

相关问题