2015-07-06 2 views
4

У меня есть цикл for в javascript, показанный ниже. Как сделать конвертировать его в lodash для цикла? В таких сценариях использование lodash выгодно для javascript для цикла?lodash: как перемещаться между начальным значением и конечным значением

Я не использовал lodash много. Отсюда, пожалуйста, совет.

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

Почему вы должны использовать lodash здесь? –

+0

Просто попробуйте lodash. Хотите изучить его и как его использовать в разных сценариях, –

+0

Проверьте это: http://stackoverflow.com/questions/18881487/why-is-lodash-each-faster-than-native-foreach –

ответ

4

я представить себе, что 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); 
}); 

И вы получите тот же результат. Сложность такая же, как и предыдущая (так что проблема с производительностью).

+0

Таким образом, отсутствие производительности или преимущества памяти, не так ли? лучше пойти с ванильным javascript для цикла? –

+1

Если вы будете использовать много манипуляций с данными, lodash всегда лучше, чем ванильный javascript. см. Http://filimanjaro.com/blog/2014/introducing-lazy-evaluation/ для вопросов о производительности. Это более чистый и более адаптивный, чем ванильный js. Если вам нужен только цикл for, для него не требуется полная библиотека, но если вы создадите реальное приложение, управляющее данными, эта библиотека вполне обязательна. – IxDay

0

Кажется, нет lodash способа для написания рыхлых for петли (которые не итерация по коллекции), но здесь это упрощенная версия этого:

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

ОК. В этом случае я подожду некоторое время, пока не придут больше предложений, и если больше предложений не придет, я помету ваше как решение. –

0

Вы можете использовать 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]