Czym jest Lodash?
Lodash jest supersetem Underscore. Co to jest Underscore? Underscore to ” cała masa przydatnych pomocników programowania funkcjonalnego bez rozszerzania żadnych wbudowanych obiektów.” W skrócie, Lodash jest biblioteką pomocniczą JS dla tablic, ciągów i obiektów. Dokumentacja znajduje się tutaj: https://lodash.com/docs
Dlaczego warto używać Lodash?
Pomoże Ci poradzić sobie ze wszystkimi typami obiektów i zaoszczędzisz czas dzięki temu, że nie będziesz kodował funkcji generycznych. Twój kod będzie również czystszy z mniejszą liczbą linii i będzie działał na wszystkich przeglądarkach. Jeśli obecnie go nie używasz, powinieneś poważnie się nad tym zastanowić.
1. _.assign
_.assign jest odpowiednikiem operatora rozprzestrzeniania z ES6. Jest dość łatwy do zrozumienia, przypisuje właściwości jednego lub wielu obiektów do obiektu źródłowego.
2. _.times
_.times otrzymuje jako argumenty liczbę iteracji oraz funkcję do wykonania n razy i zwraca tablicę z wynikami. Bardzo przydatne przy tworzeniu dynamicznych danych testowych.
3. _.debounce
_.debounce wywoła funkcję po określonym czasie od ostatniego jej wywołania.
W tym przykładzie, funkcja validateEmail zostanie wywołana po 500ms, więc komunikat o błędzie nie pojawi się natychmiast. Timer 500ms będzie resetowany przy każdym naciśnięciu klawisza. W ten sposób, użytkownik nie zobaczy komunikatu o błędzie dopóki nie przestanie pisać.
4. _.find
Zamiast iterować przez tablicę z pętlą w celu znalezienia konkretnego obiektu, możemy po prostu użyć _.find. To jest miłe, ale to nie jest jedyna rzecz, którą możesz zrobić z _.find. Możesz również znaleźć obiekt używając wielu właściwości za pomocą jednej linii kodu. Przyjrzyj się temu!
5. _.get i ._set
W przypadku tej jednej będę trochę oszukiwał, przedstawiając 2 funkcje, które robią prawie to samo. _.get zwróci wartość właściwości z obiektu, a _.set ustawi właściwość z wartością, dobrze zgadłeś. Nic specjalnego poza tym, że możesz uzyskać dostęp do właściwości za pomocą jej ścieżki.
Zobaczmy przykład.
Przy użyciu _.set, jeśli ścieżka nie istnieje, zostanie utworzona. Koniec z błędem „Cannot set property 'items’ of undefined”. Z _.get, jeśli ścieżka nie istnieje, zwróci undefined zamiast błędu. Możesz również określić wartość domyślną (trzeci argument), jeśli ścieżka rozwiąże się do undefined.
6. _.deburr
Ten jest całkiem prosty. Usuwa wszystkie „łączenie znaków diakrytycznych”, więc „é” staje się „e”.
Dobrym zwyczajem jest deburrowanie tekstu dla funkcji wyszukiwania, gdy istnieje internacjonalizacja i lokalizacja.
7. _.keyBy
_.keyBy jest jednym z moich ulubionych. Bardzo pomaga, gdy próbujemy uzyskać obiekt z określoną właściwością. Załóżmy, że mamy 100 postów na blogu i chcemy uzyskać post z Id „34abc”. Jak możemy to osiągnąć? Zobaczmy!
Za każdym razem, gdy serwer zwraca kolekcję obiektów jako tablicę, ta funkcja może pomóc w jej uporządkowaniu. Drugim argumentem może być również funkcja.
8. _.reduce
_.reduce jest trochę podobna do funkcji filtrującej. Jedyna różnica polega na tym, że możesz wybrać formę zwracanego obiektu. Jeśli nie rozumiesz, co próbuję powiedzieć, to normalne, jest na to przykład.
Ouch! To jest trudne. Więc w zasadzie zwracamy nowy obiekt z użytkownikami pogrupowanymi według ich wieku i tylko dla użytkowników pomiędzy 18 a 59 rokiem życia. Ta funkcja pomocnicza jest jedną z najczęściej używanych przez Lodash. Jest ona również częścią ES6. Chciałbym również zwrócić uwagę na 2 częste błędy, nie zapomnij zwrócić wyniku na końcu funkcji oraz nie zapomnij podać domyślnej wartości dla wyniku jako trzeciego argumentu (tutaj {}).
9. _.cloneDeep
Po najtrudniejszym, najłatwiejszy. _.cloneDeep sklonuje obiekt. Bez żartów! Nowy obiekt będzie miał również nowy adres w pamięci, więc nie zmiażdżysz właściwości z oryginalnego obiektu.
10 _. sortedUniq
Z tym jednym, wszystkie zduplikowane wartości nie zostaną zwrócone. Jest to zwykle używane ze względu na wydajność, ponieważ jest to specjalnie dla posortowanych tablic.
Ten jest przydatny tylko wtedy, gdy masz do czynienia z dużą tablicą. Jeśli chcesz uzyskać lepszą wydajność, powinieneś posortować swoją tablicę i użyć funkcji, które działają lepiej z posortowanymi tablicami. Istnieje kilka innych funkcji podobnych do tej z Lodash. Możesz rzucić okiem na _.sortedIndex, _.sortedIndexBy, _.sortedIndexOf, _.sortedLastIndex, _.sortedLastIndexBy, _.sortedLastIndexOf, _.sortedUniq, _.sortedUniqBy.
Zakończenie
Lodash zapewnia mnóstwo funkcji pomocniczych, aby pomóc Ci zaoszczędzić czas. Biblioteka jest bardzo lekka (69 KB), wydajna, popularna i kochana (ponad 18 000 uruchomień na Githubie). Jest aktualizowana bardzo często, a ostatnim razem, gdy patrzyłem na ich stronę Github, było 0 problemów (strona Github). Jeśli nie używasz go obecnie, bardzo łatwo jest go włączyć do istniejącego projektu. Jeśli wkrótce zaczynasz nowy projekt, powinieneś naprawdę pomyśleć o jego użyciu. Jeśli jesteś tutaj, ponieważ nie wiesz czy powinieneś go używać czy nie… cóż, powinieneś. Zakończę odpowiedzią udzieloną przez autora na Stackoverflow:
Utworzyłem Lo-Dash, aby zapewnić bardziej spójne międzyśrodowiskowe wsparcie iteracji dla tablic, łańcuchów, obiektów i
arguments
obiektów1. Od tego czasu stał się supersetem Underscore, zapewniając bardziej spójne zachowanie API, więcej funkcji (takich jak obsługa AMD, głębokie klonowanie i głębokie łączenie), dokładniejszą dokumentację i testy jednostkowe (testy, które działają w Node, Ringo, Rhino, Narwhal, PhantomJS i przeglądarkach), lepszą ogólną wydajność i optymalizacje dla iteracji dużych tablic/obiektów, a także większą elastyczność dzięki niestandardowym kompilacjom i narzędziom do prekompilacji szablonów.
.