Pull to refresh

lodash (underscore) — знай свою стандартную библиотеку

Reading time 7 min
Views 180K
image

Знающие люди рекомендуют разработчикам периодически пробегать глазами свою стандартную библиотеку, чтобы лучше представлять ее возможности. Зачем очередной раз изобретать велосипед, когда до нас уже столько сделано, и, главное, хорошо оттестировано, а бывает даже и нормально задокументировано. Говорят, полное использование стандартной библиотеки здорово повышает производительность.

Что же, в последнее время, в своей работе я во всех проектах задействую lodash (кому-то может больше нравиться underscore). Для меня это, фактически, — стандарт. В очередной раз пробегая глазами API, я решил составить для себя шпаргалку в виде: «название функции» — «краткое описание». Так удобно освежать API в памяти. Может кому пригодится.

Массивы

compact
Убираем из массива все пустые элементы (0, "", null, undefined)
difference
Создаем новый массив, как разницу, где из первого массива исключили все значения второго (А-Б)
findIndex
Возвращает индекс первого элемента, по которому callback вернул true
findLastIndex
Возвращает индекс первого с конца элемента, по которому callback вернул true
first
Возвращает первый или несколько первых элементов массива
flatten
Извлекает, в виде массива, элементы из объектов, содержащихся в передаваемом массиве
indexOf
Возвращает индекс первого совпадающего (===) элемента, если массив сортирован можно ускорить поиск
initial
Возвращает начальную часть массива (кроме n последних)
intersection
Возвращает пересечение массивов (нескольких)
last
Возвращает последний или несколько последних элементов массива
lastIndexOf
Возвращает индекс последнего совпадающего (===) элемента. (можно искать не с самого конца)
pull
Удаляет переданные элементы из массива
range
Создает массив с числами от start до end (можно выбрать шаг)
remove
Удаляет из массива элементы по заданному правилу и возвращает массив удаленных элементов
rest
Возвращает все кроме первого (нескольких первых) элементов массива
sortedIndex
Возвращает индекс вставки текущего значения в сортированном массиве
union
Возвращает массив уникальных значений — результат объединения нескольких массивов
uniq
Создает копию массива без дубликатов
without
Создает новый массив из существующего исключая некоторые значения
xor
Создает новый массив — «семантическую разницу» между переданными массивами
zip
Создает массив сгруппированных в подмассивы элементов. На вход принимает несколько массивов. Собирает так: первые элементы всех входных массивов попадают в первую группу и т.д.
zipObject
Собирает объект из двух массивов (с ключами и со значениями)

Коллекции

at
Создает новую коллекцию, только из перечисленных элементов
contains
Проверяет, содержится (содержатся) ли определенный элемент в коллекции
countBy
Создает объект, ключами которого будут значения, возвращаемые функцией обратного вызова, а значениями — количество соответствующих возвратов
every
Проверка на то, что все элементы коллекции истины (или удовлетворяют условию).
filter
Пробегает по всем элементам коллекции и возвращает МАССИВ из элементов, удовлетворяющих условию
find
Возвращает первый элемент коллекции, отвечающий заданным критериям
findLast
То же самое, что и find, только с конца
forEach
Пробегается по всем элементам коллекции, запуская функцию обратного вызова для каждого элемента
forEachRight
То же самое, что и forEach, только с конца
groupBy
Создает коллекцию, ключами которой являются значения, возвращенные функцией обратного вызова, а значениями — массивы из первоначальных элементов коллекции
indexBy
Создает коллекцию, ключами которой являются значения, возвращенные функцией обратного вызова, а значениями — последние элементы первоначальной коллекции с соответствующим ключом
invoke
Выполняет определенный метод для каждого элемента коллекции и возвращает массив из результатов этого выполнения
map
Создает массив элементов, прогоняя каждый элемент коллекции через функцию обратного вызова
max
Возвращает максимальное значение коллекции
min
Возвращает минимальное значение коллекции
pluck
Возвращает все значения определенного свойства коллекции
reduce
Уменьшаем коллекцию до значения, получаемое вызовом функций обратного вызова для каждого значения. В эту функцию, кроме самого значения, передается также результат предыдущего вызова.
reduceRight
То же самое, что и reduce, только с конца
reject
В противоположность filter — эта функция возвращает массив элементов коллекции, которые не удовлетворяют условию
sample
Возвращает случайный элемент коллекции
shuffle
Возвращает массив из перемешанных в случайном порядке элементов коллекции
size
Возвращает размер коллекции
some
Проверка на то, что хотя бы один элемент коллекции истинен (или удовлетворяет условию).
sortBy
Возвращает массив сортированных по возрастанию элементов коллекции. Для сортировки используются значения получаемые функцией обратного вызова по каждому элементу.
toArray
Преобразует коллекцию к массиву. Полезно для работы с arguments
where
Проводит глубокое сравнение каждого элемента с определенным объектом. Возвращает массив, удовлетворяющий сравнению.

Функции

after
Возвращает функцию, которая вызовет переданный колбек только после n-ого вызова
bind
Возвращает функцию, которая при вызове будет привязана к текущему this, к привязанным аргументам и аргументам, предающимся в саму вызванную функцию.
bindAll
Привязывает все методы объекта к самому этому объекту (this в методах всегда будет сам объект)
bindKey
Привязывает метод объекта к самому объетку (на момент привязки, метод может еще не существовать)
compose
Возвращает функцию — композицию из переданных функций. Передаем f,g,h — возвращает функцию = f(g(h()))
curry
Принимает на вход функцию с n параметрами, а возвращает функцию, которая в случае если параметро достаточно — вызовет входную, если нет, возвратит другую функцию, передав оставшиеся параметры которой — вызовется первоначальная.
debounce
Возвращает функцию, которая запустит входную функцию только выдержав паузу после своего последнего запуска. (устранение дребезжания)
defer
Вызовет входную функцию тогда, когда освободится текущий стек вызова (в начале следующего цикла событий)
delay
Вызовет входную функцию через n миллисекунд
memoize
Возвращает функцию, которая кэширует результаты своего выполнения, и не выполняется, если результат есть в кэше.
once
Возвратит функцию, которая вызовет входную только один раз. В последующие разы будет возвращаться полученный результат.
partial
То же самое, что и bind, но не привязывает this
partialRight
То же самое, что и partial, но привязывается к параметрам справа
throttle
Возвращает функцию, которая вызывает исходную не чаще чем один раз в n миллисекунд
wrap
Создает функцию, в первый параметр которой будет передан первый параметр врапера.

Объекты

assign
Дополняет объект отсутствующими (не просто undefined) свойствами из другого объекта
clone
Делает копию объекта (вложенные объекты копируются по ссылке)
cloneDeep
Глубокое копирование объекта (вложенные объекты копируются по содержанию)
create
Создает объект по переданному прототипу и свойствам
defaults
Дополняет объект отсутствующими (=== undefined) свойствами из другого объекта — задает умолчания
findKey
Ищет первый объект удовлетворяющий условиям — возвращает ключ
findLastKey
Ищет последний объект удовлетворяющий условиям — возвращает ключ
forIn
Обходит все свойства объекта (включая внутренние), вызывая для каждого из них функцию обратного вызова
forInRight
То же самое что и forIn только с конца
forOwn
Обходит все собственные свойства объекта, вызывая для каждого из них функцию обратного вызова
forOwnRight
То же самое что и forOwn только с конца
functions
Возвращает отсортированный массив имен всех свойств объекта, значениями которых ялвяются функции
has
Проверяет, является ли указанное свойство собственным свойством объекта
invert
Создает объект у которого ключи и значения поменяны местами
isArguments
Проверяет, является ли значение — объектом arguments
isArray
Проверяет, является ли значение массивом
isBoolean
Проверяет, является ли значение булевой переменной
isDate
Проверяет, является ли значение массивом
isElement
Проверяет, является ли значение DOM-элементом
isEmpty
Проверяет, является ли значение пустым. Массивы, строки, arguments-объекты с нулевой длинной считаются пустыми
isEqual
Проводит глубокое сравнение двух значений
isFinite
Проверяет, является ли данное значение конечным числом, или же оно может быть приобразовано к нему
isFunction
Проверяет, ялвяется ли данное значение функцией
isNaN
Проверяет значение на === NaN (это не то же самое, что стандартная isNuN, которая возвращает true для undefined и не числовых значений)
isNull
Проверяет значение на === null
isNumber
Проверяет, является ли значение числом (NaN тоже считается числом)
isObject
Проверяет, является ли значение объектом
isPlainObject
Проверяет, является ли значение чистым объектом (созданным конструктором Object)
isRegExp
Проверяет, является ли значение регулярным выражение
isString
Проверяет, является ли значение строкой
isUndefined
Проверяет значение на === undefined
keys
Возвращает массив ключей объекта
mapValues
Созает новый объект с такими же ключами, как у исходного, значения получаются вызовом callback-функции к каждому элементу
merge
Рекурсивно добавляет переданные объекты в объект назначения
omit
Возвращает объект, у которого убраны некоторые свойства
pairs
Создает из объекта двумерный массив, типа [[key1, value1], [key2, value2]].
pick
Создает из объекта другой объект со свойствами из списка
transform
Более простая альтернатива reduce — позволяет трансформировать входящий объект в другой, посредством функции обратного вызова, в которую передается кроме элементов еще и результирующий объект
values
Возвращает массив значений объекта

Утилиты

now
Возвращает текущий Unix-time в миллисекундах
constant
Создает функцию, возвращающую переданное значение
createCallback
Создает функцию, коллбек — используется для внутренних целей lodash
escape
Экранирует символы &, <, >, ", и ' соответсующими html-сущностями
identity
Функция возвращает первый переданный в нее аргумент
mixin
Добавляет в объект (или в сам lodash) элементы преданного объекта. Если объект-приемник — функция, добавляет свойства в прототип.
noConflict
Делает _ равным старому значению (до запуска lodash), и возвращает указатель на lodash
noop
Пустая функция. Возвращает undefined
parseInt
Извлекает число из строки, по умолчанию работает всегда с 10-ой системой счисления (в отличии от стандартной)
property
Возвращает функцию в стиле pluck, вызов которой с объектом в качестве параметра, вернет значение определенного свойства.
random
Вернет случайное число из диапазона. Может дробное.
result
Вернет значение свойства в объекте (если значением будет функция, она будет вызвана и возвращен ее результат)
runInContext
Вернет новую lodash-функцию привязанную к заданному контексту
template
Микрошаблонизатор
times
Выполняет указанный callback n-раз, возвращая массив результатов
unescape
Функция, обратная escape
uniqueId
Возвращает уникальный числовой ID (число, каждый раз на единицу больше. можно передавать префикс)

P.S. Я сам, конечно, не использовал все 100% функций в своей работе, поэтому возможны неточности — пишите в личку, все поправлю. По поводу орфографии — туда же.
Tags:
Hubs:
+32
Comments 62
Comments Comments 62

Articles