【发布时间】:2017-11-03 17:17:41
【问题描述】:
问题很简单:有什么方法可以调用数组方法,如filter、find、map 等,不仅在数组上,而且在任何可迭代对象上?
过滤、查找、映射等不仅对数组有意义,而且通常对序列有意义。而iterable是一个可以迭代的序列,所以过滤序列、查找(序列中的第一个元素)、映射序列的元素......无论序列是什么都是有意义的。
想象一下这样的情况:一个无限的生成器(例如斐波那契数列,生成器一次返回一个项目)。我想找到满足给定条件的第一个元素。像这样使用传播:
[...fib()].find(conditionFunction)
会先让fib序列被转储,导致浏览器因为内存消耗而崩溃(无限序列)。我可以做的是手动调用for循环并在里面使用conditionFunction。
有没有办法在(非数组)可迭代对象上懒惰地调用过滤器、查找、映射等?
【问题讨论】:
标签: javascript arrays functional-programming iterator