The simplest and 表现最差这样做的方法是:
Array.from(m).map(([key,value]) => /* whatever */)
更好的是
Array.from(m, ([key, value]) => /* whatever */))
Array.from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from接受任何可迭代或类似数组的东西并将其转换为数组!正如 Daniel 在评论中指出的那样,我们可以向转换添加映射函数,以删除迭代以及随后的中间数组。
Using Array.from
会将你的表现从O(1)
to O(n)
正如@hraban 在评论中指出的那样。自从m
is a Map
,而且它们不可能是无限的,我们不必担心无限序列。对于大多数情况,这就足够了。
还有几种其他方法可以循环遍历地图。
Using forEach
m.forEach((value,key) => /* stuff */ )
Using for..of
var myMap = new Map();
myMap.set(0, 'zero');
myMap.set(1, 'one');
for (var [key, value] of myMap) {
console.log(key + ' = ' + value);
}
// 0 = zero
// 1 = one