#2 Метод map в lodash

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

Всем привет. Мы продолжаем знакомиться с библиотекой lodash. И сегодня мы разберем такой метод как map. Как и в случае с each map существует как нативно, так и в lodash, но нативно он не такой гибкий.

Что такое map вообще и зачем он нужен? Он позволяет создавать новый массив елементов проходя через каждый елемент массива на который мы применяем метод map и вызывать функцию итератор.

Давайте попробуем В прошлый раз мы писали метод each, который пушил в массив значения. Давайте попробуем добиться того же с помощью map. Нативно это пишется так.

var newArr = [1,2,3].map(function (item) {
  return item;
})

Мы проходим по массиву и возвращаем каждое значение. Если мы посмотрим в массив newArr, то увидим, что там находятся все три елемента предыдущего массива. Мы сделали меньше шагов, чем мы делали с each, когда создавали массив, а потом пушили в него внутри each данные.

В помощью lodash это будет выглядеть так

_.map([{id: 1}, {id: 2}, {id: 3}], function (item) {
  return item.id;
})

Первым аргументом идет массив обьектов, а вторым итератор у которого будет параметр item. И внутри мы будем возвращать item.id. Как мы видим, нам вернулся массив id, которые мы вытащили из каждого обьекта.

Мы можем точно так же присвоить это выражение в переменную newArr.

var newArr = _.map([{id: 1}, {id: 2}, {id: 3}], function (item) {
  return item.id;
})

И если мы посмотрим, то в newArr у нас находится 3 id. Это очень удобно, и так же как each, map в lodash можно применять к обьектам. Выглядит это так

var newArr = _.map({id: 1, name: 'someName'}, function (item) {
  return item.id;
})

Допустим у нас есть обьект с id и name. Если мы посмотрим в newArr, то увидим, что у нас массив из значений этого обьекта.

[1, "someName"]

Что тоже очень удобно. Так как задача получить id с каждого обьекта массива очень частая, то в lodash раньше была создана специальная функция pluck. Pluck - это функция, которая позволяет получить определенное поле из каждого обьекта в массиве. Но в четвертой версии lodash ее убрали и ее функционал теперь доступен в функции map.

var newArr = _.map([{id: 1}, {id: 2}], 'id');

Применяем map на массив обьектов. Вторым параметром зададим строку id. Если мы теперь посмотрим что у нас находится в массиве newArr, мы увидим, что у нас точно так же попало в массив 2 id. На самом деле это просто синтаксический сахар, который позволяет извлекать какое-то поле из каждого обьекта в массиве. Что очень удобно. Это, конечно, не так гибко как итератор, чтобы сделать какие-то модификации, но это занимает меньше кода.

На сегодня все, а в следующем уроке мы разберем такие методы как find и filter.

Только зарегистрированные пользователи могут оставлять комментарии.  Войдите, пожалуйста.
Moe Green
6 лет назад
пример с "сахаром" - прикольно ) Вы в примерах с lodash покажете все самые используемые методы этой библиотеки на практике?
monsterlessons
6 лет назад
Да. Конечно, есть и другие методы, которые вам могут понадобится в будущем, но их намного меньше.
Moe Green
6 лет назад
это хорошо - практика - наше все! )