Underscore vs. Lodash, czyli szybkie porównanie bibliotek
Tworząc stronę opartą głównie o frontend i jakiś zbiór danych często zadajemy sobie pytanie jakiej biblioteki użyć, by obrobić dane. Javascript to język działającym (prawie) wyłącznie po stronie klienta w przeglądarce. Dzisiaj postaram się po krótce przybliżyć dwie znane biblioteki służące do obróbki zbioru danych.
Tworząc stronę opartą głównie o frontend i jakiś zbiór danych często zadajemy sobie pytanie jakiej biblioteki użyć, by obrobić dane. Javascript to język działającym (prawie) wyłącznie po stronie klienta w przeglądarce. Dzisiaj postaram się po krótce przybliżyć dwie znane biblioteki służące do obróbki zbioru danych.

Wprowadzenie
Stojąc przed wyborem między biblioteką Underscore JS a Lodash, mamy nieco problem. Wyjaśnienie jest raczej proste – obie robią praktycznie to samo i w bardzo podobny sposób. Zatem czym się różnią?
Pierwsze spojrzenie
Obie biblioteki są (wg. autorów) maksymalnie zoptymalizowane, co pokazują rozmiary produkcyjnych wersji (stan na dzień 12.04.2017), odpowiednio Underscore (5,7kb) i Lodash (4kb) – oczywiście wersje po minifikacji i kompresji gzip.
Przejdźmy do pierwszego przykładu, dla funkcji szukającej konkretnej wartości w kolekcji:
Underscore
_.findWhere(data, {title: "Example title"});
Lodash
_.find(data, {title: "Example title"});
Jak widać różnica jest kosmetyczna, jedynie w nazwie. Obie biblioteki zwrócą obiekt w takiej samej formie.
Drugi przykład, tym razem operujący na tablicy – pobierzemy różnice między dwoma tablicami:
Underscore
_.difference([1, 2, 3, 4, 5], [5, 2, 10]);
Lodash
_.difference([1, 2, 3, 4, 5], [5, 2, 10]);
W powyższym przykładzie zwrócone dane zarówno dla Underscore, jak i dla Lodash będą identyczne, tak samo jak sposób ich pobierania. Obie zwrócą taką samą tablicę zawierającą różnice w dwóch tablicach.
Przykładowe funkcje odpowiadające obu bibliotekom
- Underscore
_.any
is Lodash_.some
- Underscore
_.compose
is Lodash_.flowRight
- Underscore
_.contains
is Lodash_.includes
- Underscore
_.each
doesn’t allow exiting by returningfalse
- Underscore
_.findWhere
is Lodash_.find
- Underscore
_.flatten
is deep by default while Lodash is shallow - Underscore
_.indexBy
is Lodash_.keyBy
- Underscore
_.invoke
is Lodash_.invokeMap
- Underscore
_.mapObject
is Lodash_.mapValues
- Underscore
_.max
combines Lodash_.max
&_.maxBy
- Underscore
_.min
combines Lodash_.min
&_.minBy
- Underscore
_.object
is Lodash_.zipObject
- Underscore
_.pairs
is Lodash_.toPairs
- Underscore
_.pluck
is Lodash_.map
- Underscore
_.uniq
by aniteratee
is Lodash_.uniqBy
- Underscore
_.where
is Lodash_.filter
Źródło: Link
Podsumowanie
Oczywiście chcąc dokładniej porównać obie biblioteki należałoby zbadać każdą funkcję, jednak większość z nich robi to samo, nazywa się bardzo podobnie (jak nie tak samo). Różnice mogłyby się pojawić w dziesiątych lub nawet setnych częściach sekund, jeśli chodzi o czas wykonywania poszczególnych funkcji operujących na dużo większych zestawach danych. Obie biblioteki podają przejrzyste dokumentacje z szybkimi wyszukiwarkami metod.
Podzielcie się w komentarzach waszymi doświadczeniami związanymi z Underscore lub Lodash.
Przeczytaj także

Bezpieczeństwo w kodzie JavaScript?
Bezpieczeństwo kodu JavaScript to zasady takie jak autoryzacja i uwierzytelnianie, a także skuteczne mechanizmy szyfrowania danych.

Dodanie unikalnych elementów do tablicy
Lista elementów na stronie wymaga niekiedy przechowywania ich w tablicy z racji ilości danych. Może oczywiście zdarzyć się tak, że elementy będą się powtarzać, lub użytkownik będzie miał możliwość dodawania własnych.

Package.json – co to jest i z czego się składa?
Plik package.json jest podstawą systemu Node.js, który zawiera kompletne informacje na temat projektu. Od nazwy projektu, przez warunki licencyjne, aż po użyte pakiety potrzebne do zbudowania działającej wersji projektu.