由于Array.from 目前不能在 Chrome 上运行,我需要另一种方法来将 Iterator 转换为 Array。
(当然你也可以shim it with a polyfill)
function iterator2Array(iterator) {
var result = [];
for (var item in iterator) {
result.push(item)
}
return result;
}
出于类似的原因,我在 Map 的原型中添加了一个“toArray”,以便我基本上将迭代器转换为数组,以便您可以使用其面向函数的方法;当然,数组的每个项目都是一个 [key, value] 元组(就像在它的 Map.entries() 中一样)
if (!Map.prototype.toArray) {
/**
* Transforms a map into an Array of 'tuples' [[key, value], ...]
*/
Map.prototype.toArray = function () {
var result = [];
for (var item of this) {
result.push(item);
}
return result;
}
}
var m = new Map([[0, 0], ['a', 'A']]);
m.toArray()
然后您可以将其用作数组 - 不过请记住 [key, value] 方法!
m.toArray().map(
function(item, index, array) {
var key = item[0],
value = item[1];
console.log(key + ": " + value);
return value;
});
这将返回地图的值(当然不是超级有用!)
如果您喜欢更标准的循环:
var i = iterator.entries(),
result = [],
value;
while (value = i.next().value) {
result.push(value);
}