如何解决处理数组和 ES6 迭代器的混合
所以我从 Python 开始使用 javascript,并且在处理序列时遇到了一些摩擦。
在python中,像reduce
这样的东西是一个接受任何序列的全局函数。这很棒,因为我不需要根据我正在处理的值是列表还是生成器来更改我的代码。
在javascript中,reduce
是Array
的一个方法。
特别是在使用 Map
之类的东西时,我经常使用 Iterator
而不是 Array
。
我最初的想法是,“啊哈!我可能应该使用 lodash,我确信这些函数并不关心我拥有什么样的 Iterable”。结果 lodash 期望得到 Arrays
,所以对我没有帮助!
我的挣扎是否表明我在做一些不符合 javascript 习惯的事情?还是 javascript 的整个 Iterator
方面仍然有点不成熟?
我是否应该将所有 Iterators
标准化为 Arrays
?或者我想保持 Iterators
的状态是否正确?
解决方法
方法一:Array.from
Array.from(iterator).reduce
方法二:传播
[...iterator].reduce
方法三:编写一些全局辅助函数
const map = (func,iterator) => {
let result = [];
for (let value of iterator) {
result.push(func(value))
}
return result;
}
const reduce = (func,iterator,init) => {
// I'm not about to write my own reduce implementation here
return [...iterator].reduce(func,init);
}
那你就可以更接近python了
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。