在ES6迭代器上使用JS数组函数

问题描述

我非常喜欢JS Array对象函数(例如map()filter()reduce()some()every()等)的简单性和表达性。它们允许创建非常简洁但清晰的代码来操纵数据结构。

我还是EC6迭代器协议的忠实拥护者。它可以通过使用(... of ...) {...}语句来使代码可读,并且MapSet之类的标准集合也很好地支持了该代码

但是,从Java的背景开始,我曾经期望集合框架的组合方式保持一致性,而令我感到非常沮丧的是,没有办法使用map()filter()之类的函数一个迭代器。是的,可以使用splice运算符并编写如下代码[...iterable].filter(...),但这不是很好。这样的代码看起来不太清晰,而且,您最终为数组分配了内存。如果您希望滤除大多数值,则这尤其成问题。同样,如果要链接函数,则所有中间结果也将是需要分配内存并将值复制到其中的数组。

我的问题是,是否有一种方法可以用JavaScript(或TypeScript)编写简洁明了的代码,一方面可以使用迭代器/生成器,另一方面可以像上面的数组函数那样使用函数?我对需要使用某些第三方库或编译器的选项持开放态度。我在这里只关心编写尽可能清晰的代码

编辑:需要明确的是,我不是在寻找一种方法来将过滤器和映射逻辑延迟应用到特定的集合/可迭代对象上。这只是一个例子。我正在寻找一种在可迭代对象上使用类似于数组的函数编写可读而高效的代码方法。虽然可能会在代码中嘲笑Iterator原型,但不可避免地会引入一些错误,而我宁愿使用一个在它后面有很多眼睛的好处的库。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...