To do the same with ES methods, just the first two examples:
_.times
// import * as _ from "lodash";constgetRandomInteger=()=>Math.round(Math.random()*100);// let result = _.times(5, getRandomInteger); constresult=Array(5).fill().map(getRandomInteger);console.log(result);
_.debounce
//import * as _ from "lodash";letcheckPositiveNumberTimeout;constcheckPositiveNumber=e=>{clearTimeout(checkPositiveNumberTimeout);checkPositiveNumberTimeout=setTimeout(()=>console.log(+e.target.value>0),600);};constnumInput=document.querySelector("input[type=number]");// numInput.addEventListener("input", _.debounce(checkPositiveNumber, 600));numInput.addEventListener("input",checkPositiveNumber);
These two example illustrate well that some things are easier to achieve without lodash than others. For me, the rule of thumb is: if I use a lodash method, I use it separately (never import all of it, and if possible, use the es version that can be tree-shaked!) and make sure I reuse it throughout the code so I actually get something in return.
In a surprisingly lot of cases I have seen, the use of utilities like lodash means outsourcing the deeper understanding of a problem to a library. While that can help speed up development in the short term, it might become a convenient habit, so much that one is tempted to overcomplicate the issue at hand in order to use these utilities when it could have been far simpler solved with native methods.
That does not mean you should not use lodash, but you should be conscientious about the implications.
A very nice example is _.isEmpty(): in most cases, you are testing if an object has no enumerable keys. You'll rarely need to check at the same time if the length of an array or a string is zero, but lodash will (needlessly in the stated case) check the input for all available types.
To do the same with ES methods, just the first two examples:
_.times
_.debounce
These two example illustrate well that some things are easier to achieve without lodash than others. For me, the rule of thumb is: if I use a lodash method, I use it separately (never import all of it, and if possible, use the es version that can be tree-shaked!) and make sure I reuse it throughout the code so I actually get something in return.
In a surprisingly lot of cases I have seen, the use of utilities like lodash means outsourcing the deeper understanding of a problem to a library. While that can help speed up development in the short term, it might become a convenient habit, so much that one is tempted to overcomplicate the issue at hand in order to use these utilities when it could have been far simpler solved with native methods.
That does not mean you should not use lodash, but you should be conscientious about the implications.
This.
It makes me unsure if I should use
lodash.clonedeep
orlodash.merge
... If I write it myself, I can be sure of the implications.Also, lodash is too magical and too widely accepting in some methods, such as
lodash.filter
. (I saw a lot in lowdb.)A very nice example is
_.isEmpty()
: in most cases, you are testing if an object has no enumerable keys. You'll rarely need to check at the same time if the length of an array or a string is zero, but lodash will (needlessly in the stated case) check the input for all available types.This is one of the ones that we can implement ourselves without much effort.
I think the array's built-in
filter
method is pretty good so I never want to use the Lodash version.