DEV Community

Cover image for 5 Must Know Lodash Methods

5 Must Know Lodash Methods

Cameron Lucas on July 28, 2021

Lodash is a Javascript utility library, that helps you work with arrays, objects, strings, and just write fewer functions in general. Let's talk Lo...
Collapse
 
jonrandy profile image
Jon Randy 🎖️

I'm confused - most, if not all of the examples above can be achieved using less code in plain JS - without the overhead of a library. Using plain JS will also be faster. The debounce one is quite useful, but again - easy to write yourself instead of including a whole library

Collapse
 
jonrandy profile image
Jon Randy 🎖️ • Edited

1.

const myFavCandy = foodObj ?. favFoods[3] ?. favCandy || 'Chocolate'
Enter fullscreen mode Exit fullscreen mode

2.

const myNewBestFriend = adoptableDogs.find(dog => dog.breed=="White Lab" && dog.age>2)
Enter fullscreen mode Exit fullscreen mode

3.

const adoptableDogsNames = adoptableDogs.map(dog => dog.name)
Enter fullscreen mode Exit fullscreen mode

4.

adoptableDogs[2].age = 1
Enter fullscreen mode Exit fullscreen mode

No 72.5Kb of lodash even remotely required

Collapse
 
fxbit profile image
Petros Vasileiou

In general for this simple cases yes you don't need lodash, but in more real complex applications is simplify many things especially the chaining.

For example in 1 and 4 when you don't know in compile time the "path", but is something that is user/api/external input how you are going to do it ?

One other thing that I like in lodash is the internal error checking and handling. For example the 2 and 3 example if the adoptableDogs is null/undefined the code is going to get exception, you need to check it before use it.
The lodash is going to return empty array in map and null in find, a consistent result that you don't need to have special check or path in your code flow.

Thread Thread
 
jonrandy profile image
Jon Randy 🎖️

I agree. I was merely pointing out that these were poor examples, that do not really give any idea of why, and in what situations Lodash can be beneficial

Collapse
 
jesterxl profile image
Jesse Warden

Some points:

  1. 4 is doing mutation. In Lodash, set safely gives you a new object (not deep clone, but property copy)
  2. 1 - 4 cannot be curried in normal JavaScript unless you manually wrap them. When you start composing functions, whether using Promise, your own composition, or the new pipeline operator, you end up wrapping all this stuff.
const map_ = func => array => array.map(func)
const find_ = func => array => array.find(func)
["1", "2", "3"]
|> map_(parseInt)
|> find_(isEven)
Enter fullscreen mode Exit fullscreen mode
  1. You can re-use the partially applied functions in 2; creating these yourself just to re-use is tiresome.
  2. Not all JavaScript supports this. Many of us still deal with various IE or old Node.js versions that can't be upgraded yet. #inb4Babel This is why we use Lodash, not just 5 methods that happen to have equivalent features in "the latest JS". We agree with you that if you have that ability in the browser or your current version of Node.js, yes yes, totally use the native functionality.
  3. Outside of AWS Lambda, filesize doesn't matter in Node.js.
Thread Thread
 
jonrandy profile image
Jon Randy 🎖️ • Edited

So, the writer's example for number 4 then does not even work? The way the example is written implies mutation. This adds even more weight to my contention that these are poor Lodash examples

Collapse
 
sebbdk profile image
Sebastian Vargr • Edited

Recommendation: Do not use Lodash in current year.

Like others here have pointed out, It is a literal waste of kb's in your payload. :)

Collapse
 
doooby profile image
Ondřej Želazko • Edited

well, import { debounce } from 'lodash'; kinda takes your argument away (there are even separate packages for everything). also, in past years I'd been writing my own debounce function in every project, it isn't that a complex mechanism. I'm not that foolish any more. the lodash's version is superior and documented. and that's gist of it.

Collapse
 
sebbdk profile image
Sebastian Vargr

debouncing is not Lodash tho, it’s part of the library by practical coincidence.

It could also be a separate package like you point out.

Lodash was made in an age when array methods where lacking and polyfiling was less common.

If they changed the focus of the library, then I did not get the memo. :)

Collapse
 
tanth1993 profile image
tanth1993

in Lodash, I use debounce and cloneDeep most :)