gpt4 book ai didi

javascript - 将 Javascript 可迭代对象转换为数组

转载 作者:IT王子 更新时间:2023-10-29 02:37:26 28 4
gpt4 key购买 nike

我正在尝试使用新的 Map来自 Javascript EC6 的对象,因为它已在最新的 Firefox 和 Chrome 版本中得到支持。

但我发现它在“函数式”编程中非常有限,因为它缺少经典的 map、filter 等方法,这些方法可以很好地与 [key, value] 对一起使用。它有一个 forEach 但不返回回调结果。

如果我可以将它的 map.entries() 从 MapIterator 转换成一个简单的数组,那么我就可以使用标准的 .map.filter,没有额外的黑客攻击。

是否有将 Javascript 迭代器转换为数组的“好”方法?在 python 中,它就像执行 list(iterator) 一样简单......但是 Array(m.entries()) 返回一个以 Iterator 作为其第一个元素的数组!

编辑

我忘了说明我正在寻找一个适用于 Map 的任何地方的答案,这意味着至少 Chrome 和 Firefox(Array.from 在 Chrome 中不起作用)。

附言。

我知道有很棒的 wu.js但它对 traceur 的依赖让我很反感......

最佳答案

您正在寻找新的 Array.from function将任意可迭代对象转换为数组实例:

var arr = Array.from(map.entries());

现在是supported in Edge, FF, Chrome and Node 4+ .

当然,直接在迭代器接口(interface)上定义mapfilter等类似的方法可能是值得的,这样就可以避免分配数组。您可能还想使用生成器函数而不是高阶函数:

function* map(iterable) {
var i = 0;
for (var item of iterable)
yield yourTransformation(item, i++);
}
function* filter(iterable) {
var i = 0;
for (var item of iterable)
if (yourPredicate(item, i++))
yield item;
}

关于javascript - 将 Javascript 可迭代对象转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28718641/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com