Qu’est-ce que le Lodash ?
Lodash est un superset de Underscore. Qu’est-ce que Underscore ? Underscore est » tout un fatras d’aides utiles à la programmation fonctionnelle sans étendre aucun objet intégré. » En bref, Lodash est une bibliothèque d’aide JS pour les tableaux, les chaînes de caractères et les objets. La documentation est ici : https://lodash.com/docs
Pourquoi utiliser Lodash?
Il vous aidera à traiter tous les types d’objets et vous fera gagner du temps en ne codant pas de fonctions génériques. Votre code sera également plus propre avec moins de lignes et il fonctionnera sur tous les navigateurs. Si vous ne l’utilisez pas actuellement, vous devriez sérieusement y penser.
1. _.assign
_.assign est l’équivalent de l’opérateur spread de ES6. Assez facile à comprendre, il affecte les propriétés d’un ou plusieurs objets à un objet source.
2. _.times
_.times reçoit en arguments le nombre d’itérations et une fonction à exécuter n fois et renvoie un tableau des résultats. Très utile lors de la création de données de test dynamiques.
3. _.debounce
_.debounce invoquera une fonction après un certain temps depuis la dernière fois qu’elle a été invoquée.
Dans cet exemple, la fonction validateEmail sera invoquée après 500ms afin que le message d’erreur ne s’affiche pas instantanément. La minuterie de 500 ms sera réinitialisée à chaque appui sur une touche. De cette façon, l’utilisateur ne verra pas de message d’erreur jusqu’à ce qu’il arrête de taper.
4. _.find
Au lieu d’itérer dans un tableau avec une boucle pour trouver un objet spécifique, nous pouvons simplement utiliser _.find. C’est bien, mais ce n’est pas la seule chose que vous pouvez faire avec _.find. Vous pouvez également trouver un objet en utilisant plusieurs propriétés avec une seule ligne de code. Jetez un coup d’œil!
5. _.get et ._set
Pour celle-ci, je vais tricher un peu en présentant 2 fonctions qui font presque la même chose. _.get va retourner la valeur d’une propriété d’un objet et _.set va, eh bien vous l’avez deviné, définir une propriété avec une valeur. Rien de spécial sauf que vous pouvez accéder à une propriété avec son chemin.
Voyons un exemple.
Lorsque vous utilisez _.set, si le chemin n’existe pas, il sera créé. Plus d’erreur « Impossible de définir la propriété ‘items’ d’undefined ». Avec _.get, si le chemin n’existe pas, il retournera undefined au lieu d’une erreur. Vous pouvez également spécifier une valeur par défaut (troisième argument) si le chemin résout à undefined.
6. _.deburr
Celle-ci est assez simple. Il supprime tous les « signes diacritiques de combinaison », de sorte que « é » devient « e ».
C’est une bonne habitude de débourrer le texte pour une fonction de recherche lorsqu’il y a internationalisation et localisation.
7. _.keyBy
_.keyBy est l’un de mes favoris. Il aide beaucoup quand on essaie d’obtenir un objet avec une propriété spécifique. Disons que nous avons 100 articles de blog et que nous voulons obtenir l’article avec Id « 34abc ». Comment pouvons-nous y parvenir ? Voyons !
A chaque fois qu’un serveur renvoie une collection d’objets sous forme de tableau, cette fonction peut vous aider à l’organiser. Le deuxième argument peut également être une fonction.
8. _.reduce
_.reduce est un peu comme une fonction de filtre. La seule différence est que vous pouvez choisir la forme de l’objet retourné. Si vous ne comprenez pas ce que j’essaie de dire, c’est normal, il y a un exemple pour cette raison.
Ouch ! C’est une question difficile. Donc en gros, on retourne un nouvel objet avec les utilisateurs groupés par leur âge et seulement pour l’utilisateur entre 18 et 59 ans. Cette fonction d’aide est l’une des plus utilisées de Lodash. Elle fait également partie de l’ES6. Je veux aussi pointer 2 erreurs communes, n’oubliez pas de retourner le résultat à la fin de la fonction et n’oubliez pas de spécifier la valeur par défaut du résultat comme troisième argument (ici {}).
9. _.cloneDeep
Après la plus difficile, la plus facile. _.cloneDeep va cloner un objet. Sans blague ! Le nouvel objet aura aussi une nouvelle adresse en mémoire, donc vous n’écraserez pas une propriété de l’objet original.
10 _. sortedUniq
Avec celle-ci, toutes les valeurs dupliquées ne seront pas retournées. Il est généralement utilisé pour des raisons de performance, car il est spécifiquement pour les tableaux triés.
Ceci est utile seulement si vous traitez avec de grands tableaux. Si vous voulez de meilleures performances, vous devriez trier votre tableau et utiliser des fonctions qui fonctionnent mieux avec les tableaux triés. Il existe plusieurs autres fonctions de ce type dans Lodash. Vous pouvez jeter un œil à _.sortedIndex, _.sortedIndexBy, _.sortedIndexOf, _.sortedLastIndex, _.sortedLastIndexBy, _.sortedLastIndexOf, _.sortedUniq, _.sortedUniqBy.
Conclusion
Lodash fournit une tonne de fonctions d’aide pour vous faire gagner du temps. La bibliothèque est très légère (69 Ko), efficace, populaire et aimée (plus de 18 000 démarrages sur Github). Elle est mise à jour très souvent et la dernière fois que j’ai regardé leur page Github, il y avait 0 problème (page Github). Si vous ne l’utilisez pas actuellement, il est très facile de l’incorporer dans un projet existant. Si vous démarrez bientôt un nouveau projet, vous devriez vraiment penser à l’utiliser. Si vous êtes ici parce que vous ne savez pas si vous devez l’utiliser ou non… eh bien, oui, vous devriez. Je vais conclure avec une réponse donnée par l’auteur sur Stackoverflow:
J’ai créé Lo-Dash pour fournir un support d’itération inter-environnements plus cohérent pour les tableaux, les chaînes, les objets et les objets
arguments
1. Il est depuis devenu un superset d’Underscore, fournissant un comportement plus cohérent de l’API, plus de fonctionnalités (comme le support de l’AMD, le clone profond et la fusion profonde), une documentation plus approfondie et des tests unitaires (tests qui s’exécutent dans Node, Ringo, Rhino, Narwhal, PhantomJS et les navigateurs), de meilleures performances globales et des optimisations pour l’itération de grands tableaux/objets, et plus de flexibilité avec des constructions personnalisées et des utilitaires de précompilation de modèles.