2 sep, 2016 – 4 min read
Vad är Lodash?
Lodash är en överordnad uppsättning av Underscore. Vad är Underscore? Underscore är ” en hel massa användbara funktionella programmeringshjälpmedel utan att utöka några inbyggda objekt”. Kort sagt är Lodash ett JS-hjälparbibliotek för matriser, strängar och objekt. Dokumentationen finns här: https://lodash.com/docs
Varför använda Lodash?
Det hjälper dig att hantera alla typer av objekt och du sparar tid genom att inte koda generiska funktioner. Din kod blir också renare med färre rader och den fungerar i alla webbläsare. Om du inte använder det för närvarande bör du allvarligt tänka på det.
1. _.assign
_.assign är motsvarigheten till spridningsoperatorn från ES6. Den är ganska enkel att förstå, den tilldelar egenskaper hos ett eller flera objekt till ett källobjekt.
2. _.times
_.times tar emot som argument antalet iterationer och en funktion som ska exekveras n gånger och returnerar en array med resultaten. Mycket användbart när man skapar dynamiska testdata.
3. _.debounce
_.debounce anropar en funktion efter en viss tid sedan den senast anropades.
I det här exemplet kommer funktionen validateEmail att anropas efter 500ms så att felmeddelandet inte visas omedelbart. Timern på 500 ms kommer att återställas vid varje tangenttryckning. På så sätt kommer användaren inte att se ett felmeddelande förrän han slutar skriva.
4. _.find
Istället för att iterera genom en array med en slinga för att hitta ett specifikt objekt kan vi helt enkelt använda _.find. Det är trevligt, men detta är inte det enda du kan göra med _.find. Du kan också hitta ett objekt med hjälp av flera egenskaper med en enda kodrad. Ta en titt!
5. _.get och ._set
För den här kommer jag att fuska lite genom att presentera 2 funktioner som gör nästan samma sak. _.get returnerar ett egenskapsvärde från ett objekt och _.set, ja du gissade det, sätter en egenskap med ett värde. Inget speciellt förutom att du kan komma åt en egenskap med dess sökväg.
Låt oss se ett exempel.
När du använder _.set kommer sökvägen att skapas om den inte finns. Inget mer fel ”Cannot set property ’items’ of undefined”. Med _.get, om sökvägen inte finns, returneras odefinierad istället för ett fel. Du kan också ange ett standardvärde (tredje argumentet) om sökvägen löser sig till odefinierad.
6. _.deburr
Den här är ganska enkel. Den tar bort alla ”kombinerande diakritiska tecken”, så ”é” blir ”e”.
Det är en bra vana att deburrera text för en sökfunktion när det finns internationalisering och lokalisering.
7. _.keyBy
_.keyBy är en av mina favoriter. Den är till stor hjälp när man försöker få fram ett objekt med en specifik egenskap. Låt oss säga att vi har 100 blogginlägg och att vi vill hämta inlägget med Id ”34abc”. Hur kan vi uppnå detta? Låt oss se!
När en server returnerar en objektsamling som en array kan den här funktionen hjälpa dig att organisera den. Det andra argumentet kan också vara en funktion.
8. _.reduce
_.reduce är lite som en filterfunktion. Den enda skillnaden är att du kan välja formen på det returnerade objektet. Om du inte förstår vad jag försöker säga är det normalt, det finns ett exempel av denna anledning.
Och! Det här är en svår fråga. Så i princip returnerar vi ett nytt objekt med användare grupperade efter ålder och endast för användare mellan 18 och 59 år. Den här hjälpfunktionen är en av de mest använda från Lodash. Den är också en del av ES6. Jag vill också peka på 2 vanliga fel, glöm inte att returnera resultatet i slutet av funktionen och glöm inte att ange standardvärdet för resultatet som det tredje argumentet (här {}).
9. _.cloneDeep
Efter den svåraste kommer den enklaste. _.cloneDeep kommer att klona ett objekt. Inget skämt! Det nya objektet kommer också att ha en ny adress i minnet så du kommer inte att krossa en egenskap från det ursprungliga objektet.
10 _. sortedUniq
Med den här kommer alla duplicerade värden inte att returneras. Detta används vanligtvis av prestandaskäl, eftersom det är specifikt för sorterade matriser.
Detta är endast användbart om du har att göra med stora matriser. Om du vill ha bättre prestanda bör du sortera din array och använda funktioner som fungerar bättre med sorterade arrays. Det finns flera andra liknande funktioner i Lodash. Du kan ta en titt på _.sortedIndex, _.sortedIndexBy, _.sortedIndexOf, _.sortedLastIndex, _.sortedLastIndexBy, _.sortedLastIndexOf, _.sortedUniq, _.sortedUniqBy.
Slutsats
Lodash tillhandahåller en massa hjälpfunktioner som hjälper dig att spara tid. Biblioteket är mycket lätt (69 KB), effektivt, populärt och älskat (mer än 18 000 starter på Github). Det uppdateras mycket ofta och senast jag tittade på deras Github-sida fanns det 0 problem (Github-sida). Om du inte använder det för närvarande är det mycket enkelt att införliva det i ett befintligt projekt. Om du startar ett nytt projekt snart bör du verkligen tänka på att använda den. Om du är här för att du inte vet om du ska använda den eller inte … ja, då ska du göra det. Jag avslutar med ett svar från författaren på Stackoverflow:
Jag skapade Lo-Dash för att ge mer konsekvent iterationsstöd över miljögränserna för matriser, strängar, objekt och
arguments
-objekt1. Det har sedan dess blivit en övermängd av Underscore, vilket ger ett mer konsekvent API-beteende, fler funktioner (som AMD-stöd, deep clone och deep merge), grundligare dokumentation och enhetstester (tester som körs i Node, Ringo, Rhino, Narwhal, PhantomJS och webbläsare), bättre övergripande prestanda och optimeringar för iteration av stora matriser/objekt och mer flexibilitet med anpassade byggsätt och verktyg för förkompilering av mallar.