2016-12-06 3 views
0

Я хочу перебрать массив в обратном порядке с помощью Lodash. Это возможно?Как перебрать массив в обратном порядке с помощью Lodash?

Мой код выглядит ниже.

var array = [1, 2, 3, 4, 5]; 
_.each(array, function(i) { 
    _.remove(array, i); 
}); 

Когда я _.pullAt(array, 0) новый массив является [2, 3, 4, 5]. Все элементы массива смещены влево на 1 позицию, а текущий индекс указывает на элемент 3. После следующей итерации 3 будет удаляться, а затем 5. После того, как третий массив итераций содержит [2, 4], который я не смог удалить.

Если я перебираю массив в обратном порядке, то эта проблема не возникнет. В Lodash я могу перебирать массив в обратном порядке?

+0

Вы хотите опорожнить массив? –

+0

Кроме того, как '_.remove', так и' _.pullAt' не подчёркиваются. Вы используете lodash? –

ответ

1

См. How do I empty an array in JavaScript?, если вы этого хотите, и выберите свое оружие.

В противном случае, строго отвечая на вопрос, чтобы итерировать индексы от длины массива до нуля, вы можете использовать "down-to" --> operator . Но это не обязательно, даже подчеркивание в этом случае не обязательно, так как достаточно .pop function.

var arr = [1, 2, 3, 4, 5], 
 
    index = arr.length; 
 

 
while (index --> 0) { 
 
    console.log(index); 
 
    arr.pop(); 
 
} 
 
console.log(arr);

Если вы используете Lodash как функции, упомянутые в этом вопросе, кажется, указывают, вы могли бы использовать _.eachRight.

var arr = [1, 2, 3, 4, 5]; 
 

 
_.eachRight(arr, function(value) { 
 
    console.log(value); 
 
    arr.pop(); 
 
}); 
 

 
console.log(arr);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.2/lodash.min.js"></script>


понижающего оператору не существует, и это только -- декремент с последующим > сравнения.

+0

_.eachRight работал хорошо. –

Смежные вопросы