2016-12-06 2 views
0

Ich möchte über ein Array in umgekehrter Reihenfolge mit Lodash iterieren. Ist das möglich?Wie man mit Lodash über Array in umgekehrter Reihenfolge iteriert?

Mein Code sieht wie folgt aus.

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

Wenn ich _.pullAt(array, 0) neues Array zu tun ist [2, 3, 4, 5]. Alle Array-Elemente werden um 1 Position nach links verschoben, und der aktuelle Index zeigt auf Element 3. Nach der nächsten Iteration wird 3 gelöscht und dann 5. Nach dem 3. Iterations-Array enthält [2, 4], das ich nicht löschen konnte.

Wenn ich in umgekehrter Reihenfolge über das Array iteriere, wird dieses Problem nicht auftreten. Kann ich in Lodash über ein Array in umgekehrter Reihenfolge iterieren?

+0

Sie möchten das Array dann leeren? –

+0

Auch "_.remove" und "_.pullAt" sind nicht im Unterstrich. Benutzt du Lodash? –

Antwort

1

Siehe How do I empty an array in JavaScript? Wenn Sie nur wollen und wählen Sie Ihre Waffe.

Ansonsten streng die Frage zu beantworten, um die Indizes von der Länge des Arrays auf Null zu iterieren, könnten Sie die "down-to" --> operator verwenden. Aber das ist nicht wirklich notwendig, auch Unterstreichung ist in diesem Fall nicht nötig, da .pop function genug ist.

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

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

Wenn Sie Lodash verwenden wie die in der Frage erwähnten Funktionen anzuzeigen scheinen, könnten Sie _.eachRight verwenden.

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>


Die down-to Operator existiert nicht und ist nur eine -- Abnahme gefolgt von einem > Vergleich.

+0

_eachRight hat gut funktioniert. –

Verwandte Themen