Lodash — это служебная библиотека Javascript, которая помогает вам работать с массивами, объектами, строками и просто писать меньше функций в целом. Давайте поговорим о Lodash и некоторых из его наиболее полезных методов!
1.) _.получить()
Метод _.get() может помочь нам найти элемент в объекте. Если элемент не найден по указанному пути, мы можем указать значение по умолчанию для возвращаемого метода _.get().
const foodObj = { favFoods: [ “Pizza”, “Chicken Nuggets”, “Lasagna”, { favCandy: “Sour Boys Candy” }, ], }; // We will use the _.get() method to find my favorite candy. const myFavCandy = _.get(foodObj, ‘favFoods[3].favCandy’, ‘Chocolate’) // mymyFavCandy => “Sour Boys Candy” console.log(myFavCandy)
Вот несколько вещей, на которые стоит обратить внимание:
- Метод _.get() может принимать три аргумента, первым из которых является объект, из которого мы хотим получить элемент. Второй – путь. Третий — это значение по умолчанию, которое мы хотим вернуть, если элемент не найден.
- Путь к элементу представляет собой строку.
- Перенастраиваемое значение по умолчанию может быть любым типом данных (объект, строка, число, ноль и т. д.). По умолчанию метод _.get() возвращает неопределенное значение, если элемент не удалось найти.
2.) _.найти()
Вы можете подумать, что метод _find() похож на метод _.get(), и да, оба они возвращают искомое значение, но есть несколько ключевых отличий, которые важно понимать. Давайте сначала посмотрим на метод _.find().
const adoptableDogs = [ { name: “Rex”, age: 7, breed: “German Sheperd” }, { name: “Sundance”, age: 4, breed: “Timber wolf — Mutt” }, { name: “Milo”, age: 0.8, breed: “Husky” }, { name: “Snowflake”, age: 3, breed: “White Lab” }, { name: “Chip”, age: 3, breed: “Pug” }, { name: “Bolt”, age: 5, breed: “White Lab” }, ]; // The _.find method will iterates over an object or an array and retun the first element that returns true. const myNewBestFirend = _.find( adoptableDogs, // This function will be called on every iteration. (obj) => obj.breed === “White Lab” && obj.age > 2, 2 ); // myNewBestFirend => { name: ‘Snowflake’, age: 3, breed: ‘White Lab’ } console.log(myNewBestFirend);
Типа круто правда? Мы должны говорить об этих различиях.
- Метод _.find() также принимает три аргумента, но в отличие от метода _.get() первым аргументом может быть массив или объект.
- Второй аргумент — это функция, которая будет срабатывать на каждой итерации. Я использовал функцию в приведенном выше примере, чтобы закрепить эту концепцию. Это важно понимать, и мы надеемся, что это поможет продемонстрировать возможности.
- Третий аргумент — это начальный индекс коллекции. Поскольку метод _.find() перебирает каждый элемент в коллекции. Производительность — это то, о чем следует подумать при работе с большими наборами/коллекциями данных. Вы можете указать начальный индекс для метода _.find(), с которого будет начинаться поиск.
3.) _.карта()
Метод _.map будет перебирать коллекцию (массив, объект) и возвращать новый массив на основе возвращаемого значения функции, вызываемой на каждой итерации. Давайте посмотрим.
const adoptableDogs = [ { name: “Rex”, age: 7, breed: “German Sheperd” }, { name: “Sundance”, age: 4, breed: “Timber wolf — Mutt” }, { name: “Milo”, age: 0.8, breed: “Husky” }, { name: “Snowflake”, age: 3, breed: “White Lab” }, { name: “Chip”, age: 3, breed: “Pug” }, { name: “Bolt”, age: 5, breed: “White Lab” }, ]; // The _.map method will iterate over the adoptableDogs array and return a new array with all of the dogs’ names. const adoptableDogsNames = _.map(adoptableDogs, (dog) => dog.name); // adoptableDogsNames => [ ‘Rex’, ‘Sundance’, ‘Milo’, ‘Snowflake’, ‘Chip’, ‘Bolt’ ] console.log(adoptableDogsNames);
Как видите, метод _.map() возвращает новый массив, содержащий только имена собак в качестве элементов массива.
4 _.set()
Метод _.set() противоположен методу _.get(). Он _установит_ значение элемента по указанному пути. Первый аргумент — это объект или массив, второй — путь, а третий — значение, которое вы хотите установить.
const adoptableDogs = [ { name: “Rex”, age: 7, breed: “German Sheperd” }, { name: “Sundance”, age: 4, breed: “Timber wolf — Mutt” }, { name: “Milo”, age: 0.8, breed: “Husky” }, { name: “Snowflake”, age: 3, breed: “White Lab” }, { name: “Chip”, age: 3, breed: “Pug” }, { name: “Bolt”, age: 5, breed: “White Lab” }, ]; // Sets the age of the dog at the second index of the adoptableDogs array to 1. _.set(adoptableDogs, “[2].age”, 1); // adoptableDogs[2] => { name: ‘Milo’, age: 1, breed: ‘Husky’ } console.dir(adoptableDogs[2]);
5.) _.debounce()
На мой взгляд, это один из самых мощных методов lodash. Также может быть очень сложно понять, что он делает и когда вы можете захотеть его использовать. Метод _.debounce() вернет функцию. Функция, возвращаемая методом _.debounce(), будет откладывать свой вызов до тех пор, пока не пройдет указанное количество миллисекунд с момента последнего вызова функции.
Допустим, вы слушали событие DOM (прокрутка, изменение размера и т. д.) или маршрут API/Webhook, событие или API могут вызываться несколько раз в день или даже в секунду. Теперь предположим, что вы хотите запускать функцию только один раз в 24 часа, даже если событие или API вызывается несколько раз в секунду, и здесь поможет функция с отложенным отказом. Давайте взглянем на код!
const updateData = _.debounce( () => { // Code here! We might update some kind of data that might need to be updated once a day. console.log(“Went and grabbed some new data”); }, 1000 * 60 * 60 * 24, // 1 Day Timeout { // defines if the invocation of the function is on the trailing or leading edge of the timeout. leading: true, trailing: false, } ); // We can call the function returned by the _.debounce method. updateData();
Заключение
Lodash — очень полезная служебная библиотека, и в ней есть множество полезных методов! В этом посте мы едва коснулись lodash. Если вы хотите узнать больше о методе _.debounce и глубже погрузиться в него, ознакомьтесь с этой записью в блоге Дэвид Корбахо — устранение дребезга и регулирование на примерах.
Вы также можете следить за мной на GitHub, Youtube и Twitter.