我在下面显示的javascript中有一个for循环。 如何将其转换为lodash for循环? 在这种情况下使用lodash比javascript for循环更有优势吗?
我没多久使用过lodash。因此,请建议。
for (var start = b, i = 0; start < end; ++i, ++start) {
// code goes here
}
答案 0 :(得分:5)
我会想象b = 3
和end = 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}}