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

时间:2015-07-06 13:09:07

标签: javascript loops lodash

我在下面显示的javascript中有一个for循环。 如何将其转换为lodash for循环? 在这种情况下使用lodash比javascript for循环更有优势吗?

我没多久使用过lodash。因此,请建议。

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

3 个答案:

答案 0 :(得分:5)

我会想象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);
});

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

答案 1 :(得分:2)

您可以使用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]

答案 2 :(得分:0)

似乎没有lodash方式来编写松散的for (var i = 0; i < end - b; i++) { var start = i + b; // code goes here } 循环(那些没有遍历集合的循环),但这里是它的简化版本:

{{1}}
相关问题