Sep 2, 2016 – 4 min read
Was ist Lodash?
Lodash ist ein Superset von Underscore. Was ist Underscore? Underscore ist „ein ganzes Sammelsurium von nützlichen funktionalen Programmierhilfen, ohne irgendwelche eingebauten Objekte zu erweitern.“ Kurz gesagt, Lodash ist eine JS-Hilfsbibliothek für Arrays, Strings und Objekte. Die Dokumentation befindet sich hier: https://lodash.com/docs
Warum Lodash?
Es wird Ihnen helfen, mit allen Arten von Objekten umzugehen und Sie werden Zeit sparen, indem Sie keine generischen Funktionen kodieren. Ihr Code wird außerdem sauberer und hat weniger Zeilen, und er funktioniert auf allen Browsern. Wenn Sie es noch nicht verwenden, sollten Sie ernsthaft darüber nachdenken.
1. _.assign
_.assign ist das Äquivalent zum Spread-Operator aus ES6. Er ist ziemlich einfach zu verstehen, er weist Eigenschaften eines oder mehrerer Objekte einem Quellobjekt zu.
2. _.times
_.times erhält als Argumente die Anzahl der Iterationen und eine Funktion, die n-mal ausgeführt werden soll und gibt ein Array der Ergebnisse zurück. Sehr nützlich bei der Erstellung dynamischer Testdaten.
3. _.debounce
_.debounce ruft eine Funktion nach einer bestimmten Zeitspanne seit dem letzten Aufruf auf.
In diesem Beispiel wird die Funktion validateEmail nach 500ms aufgerufen, damit die Fehlermeldung nicht sofort erscheint. Der 500ms Timer wird bei jedem Tastendruck zurückgesetzt. Auf diese Weise sieht der Benutzer keine Fehlermeldung, bis er aufhört zu tippen.
4. _.find
Anstatt ein Array mit einer Schleife zu durchlaufen, um ein bestimmtes Objekt zu finden, können wir einfach _.find verwenden. Das ist schön, aber das ist nicht das einzige, was man mit _.find machen kann. Sie können ein Objekt auch anhand mehrerer Eigenschaften mit einer einzigen Codezeile finden. Schauen Sie sich das an!
5. _.get und ._set
Hier werde ich ein wenig schummeln, indem ich 2 Funktionen vorstelle, die fast das Gleiche tun. _.get gibt einen Eigenschaftswert von einem Objekt zurück und _.set setzt, Sie ahnen es, eine Eigenschaft mit einem Wert. Nichts Besonderes, außer dass man auf eine Eigenschaft mit ihrem Pfad zugreifen kann.
Lassen Sie uns ein Beispiel sehen.
Wenn Sie _.set verwenden, wird der Pfad erstellt, wenn er nicht existiert. Kein „Cannot set property ‚items‘ of undefined“-Fehler mehr. Mit _.get wird, wenn der Pfad nicht existiert, ein undefinierter Wert anstelle eines Fehlers zurückgegeben. Sie können auch einen Standardwert (drittes Argument) angeben, wenn der Pfad zu undefiniert aufgelöst wird.
6. _.deburr
Dies ist ziemlich einfach. Es entfernt alle „kombinierenden diakritischen Zeichen“, so dass „é“ zu „e“ wird.
Es ist eine gute Angewohnheit, Text für eine Suchfunktion zu entgraten, wenn es Internationalisierung und Lokalisierung gibt.
7. _.keyBy
_.keyBy ist einer meiner Favoriten. Es ist sehr hilfreich, wenn man versucht, ein Objekt mit einer bestimmten Eigenschaft zu erhalten. Nehmen wir an, wir haben 100 Blogeinträge und möchten den Beitrag mit der Id „34abc“ abrufen. Wie können wir das erreichen? Mal sehen!
Immer wenn ein Server eine Objektsammlung als Array zurückgibt, kann diese Funktion Ihnen helfen, sie zu organisieren. Das zweite Argument kann auch eine Funktion sein.
8. _.reduce
_.reduce ist ein bisschen wie eine Filterfunktion. Der einzige Unterschied ist, dass Sie die Form des zurückgegebenen Objekts wählen können. Wenn du nicht verstehst, was ich zu sagen versuche, ist das normal, es gibt ein Beispiel dafür.
Autsch! Das ist ein schwieriger Fall. Im Grunde geben wir also ein neues Objekt mit Benutzern zurück, die nach ihrem Alter gruppiert sind, und zwar nur für Benutzer zwischen 18 und 59. Diese Hilfsfunktion ist eine der am häufigsten verwendeten Funktionen von Lodash. Sie ist auch Teil von ES6. Ich möchte auch auf 2 häufige Fehler hinweisen, vergessen Sie nicht, das Ergebnis am Ende der Funktion zurückzugeben und vergessen Sie nicht, den Standardwert für das Ergebnis als drittes Argument (hier {}) anzugeben.
9. _.cloneDeep
Nach der schwierigsten, nun die einfachste. Mit _.cloneDeep wird ein Objekt geklont. Kein Scherz! Das neue Objekt hat auch eine neue Adresse im Speicher, so dass Sie keine Eigenschaft des ursprünglichen Objekts zerstören.
10 _.sortedUniq
Mit dieser Funktion werden alle doppelten Werte nicht zurückgegeben. Dies wird normalerweise aus Leistungsgründen verwendet, da es speziell für sortierte Arrays ist.
Dies ist nur nützlich, wenn Sie mit großen Arrays arbeiten. Wenn Sie eine bessere Leistung wünschen, sollten Sie Ihr Array sortieren und Funktionen verwenden, die besser mit sortierten Arrays arbeiten. Es gibt mehrere andere Funktionen wie diese in Lodash. Sie können einen Blick auf _.sortedIndex, _.sortedIndexBy, _.sortedIndexOf, _.sortedLastIndex, _.sortedLastIndexBy, _.sortedLastIndexOf, _.sortedUniq, _.sortedUniqBy werfen.
Fazit
Lodash bietet eine Menge an Hilfsfunktionen, die Ihnen helfen, Zeit zu sparen. Die Bibliothek ist sehr leicht (69 KB), effizient, populär und beliebt (mehr als 18.000 Starts auf Github). Sie wird sehr häufig aktualisiert und als ich das letzte Mal auf die Github-Seite schaute, gab es 0 Probleme (Github-Seite). Wenn Sie es derzeit nicht verwenden, ist es sehr einfach in ein bestehendes Projekt einzubinden. Wenn Sie demnächst ein neues Projekt beginnen, sollten Sie wirklich darüber nachdenken, es zu verwenden. Wenn Sie hier sind, weil Sie nicht wissen, ob Sie es verwenden sollten oder nicht … nun, ja, Sie sollten. Ich schließe mit einer Antwort des Autors auf Stackoverflow:
Ich habe Lo-Dash entwickelt, um eine konsistentere, umgebungsübergreifende Iterationsunterstützung für Arrays, Strings, Objekte und
arguments
Objekte1 zu bieten. Seitdem ist es zu einer Obermenge von Underscore geworden, die ein konsistenteres API-Verhalten, mehr Funktionen (wie AMD-Unterstützung, Deep Clone und Deep Merge), eine gründlichere Dokumentation und Unit-Tests (Tests, die in Node, Ringo, Rhino, Narwhal, PhantomJS und Browsern laufen), eine bessere Gesamtleistung und Optimierungen für große Arrays/Objekt-Iterationen und mehr Flexibilität mit benutzerdefinierten Builds und Template-Pre-Compilation-Dienstprogrammen bietet.