JavaScript中Scala视图的等价物

JavaScript中Scala视图的等价物,javascript,scala,functional-programming,lazy-evaluation,lazy-sequences,Javascript,Scala,Functional Programming,Lazy Evaluation,Lazy Sequences,在Scala中,view允许阻止创建全新的集合。 e、 g JavaScript中有类似的东西吗? 我的用例: x = inputValue.split(",").map(x => x.trim()).filter(f1).map(f2) 正如您在上面的代码中所看到的,将创建两个中间集合。JavaScript中是否有避免创建上述中间集合的方法?Scala是一种与JavaScript类似的严格语言。这意味着,如果您创建一个列表并使用map,Scala将急切地创建一个新列表: //it cr

在Scala中,
view
允许阻止创建全新的集合。 e、 g

JavaScript中有类似的东西吗? 我的用例:

x = inputValue.split(",").map(x => x.trim()).filter(f1).map(f2)

正如您在上面的代码中所看到的,将创建两个中间集合。JavaScript中是否有避免创建上述中间集合的方法?

Scala是一种与JavaScript类似的严格语言。这意味着,如果您创建一个列表并使用map,Scala将急切地创建一个新列表:

//it creates List(2,3,4) and List(4,6,8) already when map is called
List(1,2,3).map(_ + 1).map(_ *2) 
不过,您可以通过调用view使Scala集合变为惰性:

不幸的是,Javascript中没有内置函数使数组惰性地运行,但有一个库,其工作原理类似于Scala视图:

Lazy([1,2,3]).map(x => x + 1).map(x => x * 2).take(2).toArray()
根据文件:

这里重要的是,在调用每个数组之前不会进行迭代,也不会创建中间数组


我不知道,但我真的很想知道!!!很好的问题。你基本上是在问传感器?像RamdaJS或RamdaJS(以及许多其他人)?如中所述?(网络是你的朋友。我搜索了“不要创建中间集合”。@DaveNewton是的。。。我已经访问了上面的链接。。。但是,如果没有上述库,是否有可能实现一些有用的东西。@MukeshPrajapati当然,按照他们的方式实现它——源代码可供研究的地方很少。JavaScript有迭代器。迭代器不支持映射、减少、筛选等。这与惰性集合不同。我知道,API非常贫乏,但我的观点是,它们可以用于实施此类操作。
Lazy([1,2,3]).map(x => x + 1).map(x => x * 2).take(2).toArray()