#3 Методы find и filter в lodash

poster
В этом уроке мы разберем как использовать методы find и filter в lodash.
Понравилось? Поделитесь с друзьями!
Понравилось?
Поделитесь с друзьями!
Комментарии
Текст видео

Всем привет. Мы продолжаем знакомиться с lodash и сегодня мы разберем два очень полезных метода find и filter.

Давайте начнем с метода filter. Когда нам нужно из массива отобрать елементы, которые подходят под какое-то условие - мы используем метод filter. Давайте попробуем.

_.filter([1,2,3,4,5], function (item) {
  return item < 3;
})

Первым аргументом у нас будет массив елементов, а вторым итератор, который будет проходить по каждому елементу. Как мы видим, в результате выполнения мы получаем массив елементом [1,2].

Нужно всегда помнить, что в результате выполнения метода filter мы всегда получаем массив. Если мы не нашли ни одного подходящего елемента - то возвращается пустой массив.

Чаще же всего фильтр используется с массивом обьектов

_.filter([{id: 1, name: 'foo'}, {id:2, name: 'bar'}], function (item) {
  return item.name === 'foo';
});

В результате выполнения мы получили отфильтрованый массив.

Ну и естественно фильтр можно применять к обьектам точно также как и к массивам. Если у нас есть переменная а, то мы можем отфильтровать ее поля.

a = {id:1, name:2}
_.filter(a,function (item){
  return item==1;
})

В результате получим массив с елементом 1. Мы проходим по всем значениям обьекта, отбираем все, которые подходят по условию и выводим в массив. Конечно этот пример не особо полезный, но логику работы с обьектом вы поняли.

Теперь о find. Он работает абсолютно так же как и фильтр, но возвращает не массив, а первый найденный по условию елемент.

_.find([{id: 1, name: 'foo'}, {id:2, name: 'bar'}], function (item){
  return item.name === 'bar';
});

В результате как мы видим мы получили обьект. И это был первый, попавший под условие елемент. Обычно это используется, когда елементы уникальны по какому-то ключу. Если бы мы елемент не нашли, то нам бы вернулся undefined. В остальном же метод работает точно так же как и find.

Теперь давайте рассмотрим как написать меньше кода. Мы можем использовать короткую запись с вторым аргументом в виде обьекта

_.find([{id: 1, name: 'foo'}, {id:2, name: 'bar'}], {id: 1});

Запись получилась намного короче, а результат тот же самый.

Точно так же можно применять короткую запись с методом filter.

_.filter([{id: 1, name: 'foo'}, {id:2, name: 'bar'}], {id: 1});

И на последок - я очень часто встречал в коде когда люди не знают что существует метод find и пишут метод фильтр и вытаскивают с него первый найденный елемент. Это конечно рабочий, но не самый красивый вариант.

А в следующем уроке мы с вами разберем методы remove и without.

Только зарегистрированные пользователи могут оставлять комментарии.  Войдите, пожалуйста.