lodash:如何在起始值和结束值之间循环

lodash : how to loop with between a start value and end value

我在 javascript 中有一个 for 循环,如下所示。 如何将其转换为 lodash for 循环? 在这种情况下,使用 lodash 优于 javascript for loop?

我没怎么用过lodash。因此请指教。

for (var start = b, i = 0; start < end; ++i, ++start) {
// code goes here
}

似乎没有用于编写松散 for 循环(那些不遍历集合)的 lodash 方法,但这是它的简化版本:

for (var i = 0; i < end - b; i++) {
      var start = i + b;
      // code goes here
}

我会想象 b = 3end = 10 如果我 运行 您的代码并在此处打印变量,我将得到:

var b = 3;
var end = 10;

for (var start = b, i = 0; start < end; ++i, ++start) {
  console.log(start, i);
}

> 3 0
> 4 1
> 5 2
> 6 3
> 7 4
> 8 5
> 9 6

要使用 lodash(或下划线)执行此操作,我将首先使用 range 生成一个数组,然后对其进行迭代并在每次迭代时获取索引。

这是结果

var b = 3;
var end = 10;

// this will generate an array [ 3, 4, 5, 6, 7, 8, 9 ]
var array = _.range(b, end); 

// now I iterate over it
_.each(array, function (value, key) {
  console.log(value, key);
});

你会得到同样的结果。复杂度与上一个相同(因此没有性能问题)。

你可以使用 lodash range
https://lodash.com/docs/4.17.4#range

_.range(5, 10).forEach((current, index, range) => {
    console.log(current, index, range)
})

// 5, 0, [5, 6, 7, 8, 9, 10]
// 6, 1, [5, 6, 7, 8, 9, 10]
// 7, 2, [5, 6, 7, 8, 9, 10]
// 8, 3, [5, 6, 7, 8, 9, 10]
// 9, 4, [5, 6, 7, 8, 9, 10]
// 10, 5, [5, 6, 7, 8, 9, 10]