使用下划线在javascript中进行惰性范围迭代

时间:2011-09-26 05:03:57

标签: javascript underscore.js

我已经发现自己使用它来取代传统的for循环:

_.each(_.range(count), function(i){
  ...
});

缺点是创建了一个不必要的大小计数数组。

不过,我更喜欢语义,例如 .each( .range(10,0,-1),...);当向后迭代时。

有没有办法对范围进行延迟迭代,就像pythons xrange一样?

3 个答案:

答案 0 :(得分:3)

请注意:

_.each(_.range(count), function(i){
  ...
});

相当于

_.times(count, function(i){
  ...
});

小是美丽的......

答案 1 :(得分:2)

考虑source of underscore.js以下关于range的说明:

  

生成包含算术级数的整数数组

我怀疑有一种方法可以在不修改源的情况下进行延迟迭代。

答案 2 :(得分:2)

如果您不介意弄脏手,请深入了解较旧但功能齐全MochiKitIter模块的来源。它试图创建Python的itertools