懒惰的评价在Lodash不起作用

时间:2015-08-08 05:27:49

标签: javascript lodash

Lodash文档说它supports lazy evaluation。根据我的测试,下面的链被评估100次而不是10次。我使用的是版本3.10.1。

_(_.range(100))
 .map(function(x) {console.log(1); return x; })
 .take(10)
 .value()

您可以看到我们在map内打印到控制台100次,而不是我预期的10次。在这里查看问题:https://jsfiddle.net/07utwk6y/

我做错了什么?如何懒惰地评估这个?

更新:这似乎是Lodash的回归。我测试了它在不同版本中的工作原理,并得出以下结果:

版本2.4.2:100次https://jsfiddle.net/4Lq7z5xL/

3.0.0版:10次https://jsfiddle.net/fd6g6un5/

版本3.9.0 10次https://jsfiddle.net/ju8rppee/

版本3.10.0:100次https://jsfiddle.net/x1g13oo8/

1 个答案:

答案 0 :(得分:10)

这是预期的行为。 Lodash仅对具有200个或更多项目的阵列执行此优化。在第一行中将范围增加到200以查看此工作。