lodash
Методы «Array»
_.chunk(array, [size=1])
Создаёт массив элементов, разбитых на группы длиной size. Если array не удаётся разделить поровну, последний фрагмент будет содержать оставшиеся элементы.
Начиная с версии
3.0.0
Аргументы
-
array(Array): Массив для обработки. -
[size=1](number): Длина каждого фрагмента.
Возвращает
(Array): Возвращает новый массив фрагментов.
Пример
_.chunk(['a', 'b', 'c', 'd'], 2); // => [['a', 'b'], ['c', 'd']] _.chunk(['a', 'b', 'c', 'd'], 3); // => [['a', 'b', 'c'], ['d']]
_.compact(array)
Создаёт массив с удалением всех ложных (falsey) значений. Значения false, null, 0, -0, 0n, "", undefined и NaN являются ложными.
Начиная с версии
0.1.0
Аргументы
-
array(Array): Массив для уплотнения.
Возвращает
(Array): Возвращает новый массив отфильтрованных значений.
Пример
_.compact([0, 1, false, 2, '', 3]); // => [1, 2, 3]
_.concat(array, [values])
Создаёт новый массив, объединяя array с любыми дополнительными массивами и/или значениями.
Начиная с версии
4.0.0
Аргументы
-
array(Array): Массив для конкатенации. -
[values](...*): Значения для конкатенации.
Возвращает
(Array): Возвращает новый объединённый массив.
Пример
var array = [1]; var other = _.concat(array, 2, [3], [[4]]); console.log(other); // => [1, 2, 3, [4]] console.log(array); // => [1]
_.difference(array, [values])
Создаёт массив значений array, не включённых в другие переданные массивы, используя SameValueZero для сравнения на равенство. Порядок и ссылки результирующих значений определяются первым массивом.
Примечание: В отличие от _.pullAll, этот метод возвращает новый массив.
Начиная с версии
0.1.0
Аргументы
-
array(Array): Проверяемый массив. -
[values](...Array): Исключаемые значения.
Возвращает
(Array): Возвращает новый массив отфильтрованных значений.
Пример
_.difference([2, 1], [2, 3]); // => [1]
_.differenceBy(array, [values], [iteratee=_.identity])
Этот метод подобен _.difference, за исключением того, что он принимает iteratee, которая вызывается для каждого элемента array и values для генерации критерия их сравнения. Порядок и ссылки результирующих значений определяются первым массивом. Итератор вызывается с одним аргументом:
(value).
Примечание: В отличие от _.pullAllBy, этот метод возвращает новый массив.
Начиная с версии
4.0.0
Аргументы
-
array(Array): Проверяемый массив. -
[values](...Array): Исключаемые значения. -
[iteratee=_.identity](Function): Итератор, вызываемый для каждого элемента.
Возвращает
(Array): Возвращает новый массив отфильтрованных значений.
Пример
_.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);
// => [1.2]
// The `_.property` iteratee shorthand.
_.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
// => [{ 'x': 2 }]
_.differenceWith(array, [values], [comparator])
Этот метод подобен _.difference, за исключением того, что он принимает comparator, который вызывается для сравнения элементов array и values. Порядок и ссылки результирующих значений определяются первым массивом. Компаратор вызывается с двумя аргументами: (arrVal, othVal).
Примечание: В отличие от _.pullAllWith, этот метод возвращает новый массив.
Начиная с версии
4.0.0
Аргументы
-
array(Array): Проверяемый массив. -
[values](...Array): Исключаемые значения. -
[comparator](Function): Компаратор, вызываемый для каждого элемента.
Возвращает
(Array): Возвращает новый массив отфильтрованных значений.
Пример
var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
_.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);
// => [{ 'x': 2, 'y': 1 }]
_.drop(array, [n=1])
Создаёт срез array с отбрасыванием первых n элементов.
Начиная с версии
0.5.0
Аргументы
-
array(Array): Массив для выборки. -
[n=1](number): Количество отбрасываемых элементов.
Возвращает
(Array): Возвращает срез array.
Пример
_.drop([1, 2, 3]); // => [2, 3] _.drop([1, 2, 3], 2); // => [3] _.drop([1, 2, 3], 5); // => [] _.drop([1, 2, 3], 0); // => [1, 2, 3]
_.dropRight(array, [n=1])
Создаёт срез array с отбрасыванием последних n элементов.
Начиная с версии
3.0.0
Аргументы
-
array(Array): Массив для выборки. -
[n=1](number): Количество отбрасываемых элементов.
Возвращает
(Array): Возвращает срез array.
Пример
_.dropRight([1, 2, 3]); // => [1, 2] _.dropRight([1, 2, 3], 2); // => [1] _.dropRight([1, 2, 3], 5); // => [] _.dropRight([1, 2, 3], 0); // => [1, 2, 3]
_.dropRightWhile(array, [predicate=_.identity])
Создаёт срез array, исключая элементы, отброшенные с конца. Элементы отбрасываются до тех пор, пока predicate возвращает ложное значение. Предикат вызывается с тремя аргументами: (value, index, array).
Начиная с версии
3.0.0
Аргументы
-
array(Array): Массив для выборки. -
[predicate=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(Array): Возвращает срез array.
Пример
var users = [
{ 'user': 'barney', 'active': true },
{ 'user': 'fred', 'active': false },
{ 'user': 'pebbles', 'active': false }
];
_.dropRightWhile(users, function(o) { return !o.active; });
// => objects for ['barney']
// The `_.matches` iteratee shorthand.
_.dropRightWhile(users, { 'user': 'pebbles', 'active': false });
// => objects for ['barney', 'fred']
// The `_.matchesProperty` iteratee shorthand.
_.dropRightWhile(users, ['active', false]);
// => objects for ['barney']
// The `_.property` iteratee shorthand.
_.dropRightWhile(users, 'active');
// => objects for ['barney', 'fred', 'pebbles']
_.dropWhile(array, [predicate=_.identity])
Создаёт срез array, исключая элементы, отброшенные с начала. Элементы отбрасываются до тех пор, пока predicate возвращает ложное значение. Предикат вызывается с тремя аргументами: (value, index, array).
Начиная с версии
3.0.0
Аргументы
-
array(Array): Массив для выборки. -
[predicate=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(Array): Возвращает срез array.
Пример
var users = [
{ 'user': 'barney', 'active': false },
{ 'user': 'fred', 'active': false },
{ 'user': 'pebbles', 'active': true }
];
_.dropWhile(users, function(o) { return !o.active; });
// => objects for ['pebbles']
// The `_.matches` iteratee shorthand.
_.dropWhile(users, { 'user': 'barney', 'active': false });
// => objects for ['fred', 'pebbles']
// The `_.matchesProperty` iteratee shorthand.
_.dropWhile(users, ['active', false]);
// => objects for ['pebbles']
// The `_.property` iteratee shorthand.
_.dropWhile(users, 'active');
// => objects for ['barney', 'fred', 'pebbles']
_.fill(array, value, [start=0], [end=array.length])
Заполняет элементы array значением value от позиции start до, но не включая, end.
Примечание: Этот метод мутирует array.
Начиная с версии
3.2.0
Аргументы
-
array(Array): Массив для заполнения. -
value(*): Значение, которым заполняетсяarray. -
[start=0](number): Начальная позиция. -
[end=array.length](number): Конечная позиция.
Возвращает
(Array): Возвращает array.
Пример
var array = [1, 2, 3]; _.fill(array, 'a'); console.log(array); // => ['a', 'a', 'a'] _.fill(Array(3), 2); // => [2, 2, 2] _.fill([4, 6, 8, 10], '*', 1, 3); // => [4, '*', '*', 10]
_.findIndex(array, [predicate=_.identity], [fromIndex=0])
Этот метод подобен _.find, за исключением того, что он возвращает индекс первого элемента, для которого predicate возвращает истинное значение, вместо самого элемента.
Начиная с версии
1.1.0
Аргументы
-
array(Array): Проверяемый массив. -
[predicate=_.identity](Function): Функция, вызываемая на каждой итерации. -
[fromIndex=0](number): Индекс, с которого начинается поиск.
Возвращает
(number): Возвращает индекс найденного элемента, иначе -1.
Пример
var users = [
{ 'user': 'barney', 'active': false },
{ 'user': 'fred', 'active': false },
{ 'user': 'pebbles', 'active': true }
];
_.findIndex(users, function(o) { return o.user == 'barney'; });
// => 0
// The `_.matches` iteratee shorthand.
_.findIndex(users, { 'user': 'fred', 'active': false });
// => 1
// The `_.matchesProperty` iteratee shorthand.
_.findIndex(users, ['active', false]);
// => 0
// The `_.property` iteratee shorthand.
_.findIndex(users, 'active');
// => 2
_.findLastIndex(array, [predicate=_.identity], [fromIndex=array.length-1])
Этот метод подобен _.findIndex, за исключением того, что он перебирает элементы collection справа налево.
Начиная с версии
2.0.0
Аргументы
-
array(Array): Проверяемый массив. -
[predicate=_.identity](Function): Функция, вызываемая на каждой итерации. -
[fromIndex=array.length-1](number): Индекс, с которого начинается поиск.
Возвращает
(number): Возвращает индекс найденного элемента, иначе -1.
Пример
var users = [
{ 'user': 'barney', 'active': true },
{ 'user': 'fred', 'active': false },
{ 'user': 'pebbles', 'active': false }
];
_.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
// => 2
// The `_.matches` iteratee shorthand.
_.findLastIndex(users, { 'user': 'barney', 'active': true });
// => 0
// The `_.matchesProperty` iteratee shorthand.
_.findLastIndex(users, ['active', false]);
// => 2
// The `_.property` iteratee shorthand.
_.findLastIndex(users, 'active');
// => 0
_.flatten(array)
Уменьшает вложенность array на один уровень.
Начиная с версии
0.1.0
Аргументы
-
array(Array): Массив для уменьшения вложенности.
Возвращает
(Array): Возвращает новый сглаженный массив.
Пример
_.flatten([1, [2, [3, [4]], 5]]); // => [1, 2, [3, [4]], 5]
_.flattenDeep(array)
Рекурсивно уменьшает вложенность array до одного уровня.
Начиная с версии
3.0.0
Аргументы
-
array(Array): Массив для уменьшения вложенности.
Возвращает
(Array): Возвращает новый сглаженный массив.
Пример
_.flattenDeep([1, [2, [3, [4]], 5]]); // => [1, 2, 3, 4, 5]
_.flattenDepth(array, [depth=1])
Рекурсивно уменьшает вложенность array до depth раз.
Начиная с версии
4.4.0
Аргументы
-
array(Array): Массив для уменьшения вложенности. -
[depth=1](number): Максимальная глубина рекурсии.
Возвращает
(Array): Возвращает новый сглаженный массив.
Пример
var array = [1, [2, [3, [4]], 5]]; _.flattenDepth(array, 1); // => [1, 2, [3, [4]], 5] _.flattenDepth(array, 2); // => [1, 2, 3, [4], 5]
_.fromPairs(pairs)
Обратная операция для _.toPairs; этот метод возвращает объект, составленный из пар «ключ-значение» pairs.
Начиная с версии
4.0.0
Аргументы
-
pairs(Array): Пары «ключ-значение».
Возвращает
(Object): Возвращает новый объект.
Пример
_.fromPairs([['a', 1], ['b', 2]]);
// => { 'a': 1, 'b': 2 }
_.head(array)
Возвращает первый элемент array.
Начиная с версии
0.1.0
Псевдонимы
_.first
Аргументы
-
array(Array): Массив для выборки.
Возвращает
(*): Возвращает первый элемент array.
Пример
_.head([1, 2, 3]); // => 1 _.head([]); // => undefined
_.indexOf(array, value, [fromIndex=0])
Возвращает индекс первого вхождения value в array, используя SameValueZero для сравнения на равенство. Если fromIndex отрицателен, он используется как смещение от конца array.
Начиная с версии
0.1.0
Аргументы
-
array(Array): Проверяемый массив. -
value(*): Искомое значение. -
[fromIndex=0](number): Индекс, с которого начинается поиск.
Возвращает
(number): Возвращает индекс найденного значения, иначе -1.
Пример
_.indexOf([1, 2, 1, 2], 2); // => 1 // Search from the `fromIndex`. _.indexOf([1, 2, 1, 2], 2, 2); // => 3
_.initial(array)
Возвращает все элементы array, кроме последнего.
Начиная с версии
0.1.0
Аргументы
-
array(Array): Массив для выборки.
Возвращает
(Array): Возвращает срез array.
Пример
_.initial([1, 2, 3]); // => [1, 2]
_.intersection([arrays])
Создаёт массив уникальных значений, присутствующих во всех переданных массивах, используя SameValueZero для сравнения на равенство. Порядок и ссылки результирующих значений определяются первым массивом.
Начиная с версии
0.1.0
Аргументы
-
[arrays](...Array): Проверяемые массивы.
Возвращает
(Array): Возвращает новый массив пересекающихся значений.
Пример
_.intersection([2, 1], [2, 3]); // => [2]
_.intersectionBy([arrays], [iteratee=_.identity])
Этот метод подобен _.intersection, за исключением того, что он принимает iteratee, которая вызывается для каждого элемента каждого arrays для генерации критерия их сравнения. Порядок и ссылки результирующих значений определяются первым массивом. Итератор вызывается с одним аргументом:
(value).
Начиная с версии
4.0.0
Аргументы
-
[arrays](...Array): Проверяемые массивы. -
[iteratee=_.identity](Function): Итератор, вызываемый для каждого элемента.
Возвращает
(Array): Возвращает новый массив пересекающихся значений.
Пример
_.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);
// => [2.1]
// The `_.property` iteratee shorthand.
_.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
// => [{ 'x': 1 }]
_.intersectionWith([arrays], [comparator])
Этот метод подобен _.intersection, за исключением того, что он принимает comparator, который вызывается для сравнения элементов arrays. Порядок и ссылки результирующих значений определяются первым массивом. Компаратор вызывается с двумя аргументами: (arrVal, othVal).
Начиная с версии
4.0.0
Аргументы
-
[arrays](...Array): Проверяемые массивы. -
[comparator](Function): Компаратор, вызываемый для каждого элемента.
Возвращает
(Array): Возвращает новый массив пересекающихся значений.
Пример
var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
_.intersectionWith(objects, others, _.isEqual);
// => [{ 'x': 1, 'y': 2 }]
_.join(array, [separator=','])
Преобразует все элементы в array в строку, разделённую с помощью separator.
Начиная с версии
4.0.0
Аргументы
-
array(Array): Массив для преобразования. -
[separator=','](string): Разделитель элементов.
Возвращает
(string): Возвращает объединённую строку.
Пример
_.join(['a', 'b', 'c'], '~'); // => 'a~b~c'
_.last(array)
Возвращает последний элемент array.
Начиная с версии
0.1.0
Аргументы
-
array(Array): Массив для выборки.
Возвращает
(*): Возвращает последний элемент array.
Пример
_.last([1, 2, 3]); // => 3
_.lastIndexOf(array, value, [fromIndex=array.length-1])
Этот метод подобен _.indexOf, за исключением того, что он перебирает элементы array справа налево.
Начиная с версии
0.1.0
Аргументы
-
array(Array): Проверяемый массив. -
value(*): Искомое значение. -
[fromIndex=array.length-1](number): Индекс, с которого начинается поиск.
Возвращает
(number): Возвращает индекс найденного значения, иначе -1.
Пример
_.lastIndexOf([1, 2, 1, 2], 2); // => 3 // Search from the `fromIndex`. _.lastIndexOf([1, 2, 1, 2], 2, 2); // => 1
_.nth(array, [n=0])
Возвращает элемент по индексу n массива array. Если n отрицателен, возвращается n-й элемент с конца.
Начиная с версии
4.11.0
Аргументы
-
array(Array): Массив для выборки. -
[n=0](number): Индекс возвращаемого элемента.
Возвращает
(*): Возвращает n-й элемент array.
Пример
var array = ['a', 'b', 'c', 'd']; _.nth(array, 1); // => 'b' _.nth(array, -2); // => 'c';
_.pull(array, [values])
Удаляет все указанные значения из array, используя SameValueZero для сравнения на равенство.
Примечание: В отличие от _.without, этот метод мутирует array. Используйте _.remove для удаления элементов из массива по предикату.
Начиная с версии
2.0.0
Аргументы
-
array(Array): Массив для изменения. -
[values](...*): Удаляемые значения.
Возвращает
(Array): Возвращает array.
Пример
var array = ['a', 'b', 'c', 'a', 'b', 'c']; _.pull(array, 'a', 'c'); console.log(array); // => ['b', 'b']
_.pullAll(array, values)
Этот метод подобен _.pull, за исключением того, что он принимает массив удаляемых значений.
Примечание: В отличие от _.difference, этот метод мутирует array.
Начиная с версии
4.0.0
Аргументы
-
array(Array): Массив для изменения. -
values(Array): Удаляемые значения.
Возвращает
(Array): Возвращает array.
Пример
var array = ['a', 'b', 'c', 'a', 'b', 'c']; _.pullAll(array, ['a', 'c']); console.log(array); // => ['b', 'b']
_.pullAllBy(array, values, [iteratee=_.identity])
Этот метод подобен _.pullAll, за исключением того, что он принимает iteratee, которая вызывается для каждого элемента array и values для генерации критерия их сравнения. Итератор вызывается с одним аргументом: (value).
Примечание: В отличие от _.differenceBy, этот метод мутирует array.
Начиная с версии
4.0.0
Аргументы
-
array(Array): Массив для изменения. -
values(Array): Удаляемые значения. -
[iteratee=_.identity](Function): Итератор, вызываемый для каждого элемента.
Возвращает
(Array): Возвращает array.
Пример
var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];
_.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');
console.log(array);
// => [{ 'x': 2 }]
_.pullAllWith(array, values, [comparator])
Этот метод подобен _.pullAll, за исключением того, что он принимает comparator, который вызывается для сравнения элементов array и values. Компаратор вызывается с двумя аргументами: (arrVal, othVal).
Примечание: В отличие от _.differenceWith, этот метод мутирует array.
Начиная с версии
4.6.0
Аргументы
-
array(Array): Массив для изменения. -
values(Array): Удаляемые значения. -
[comparator](Function): Компаратор, вызываемый для каждого элемента.
Возвращает
(Array): Возвращает array.
Пример
var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];
_.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);
console.log(array);
// => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]
_.pullAt(array, [indexes])
Удаляет элементы из array, соответствующие индексам indexes, и возвращает массив удалённых элементов.
Примечание: В отличие от _.at, этот метод мутирует array.
Начиная с версии
3.0.0
Аргументы
-
array(Array): Массив для изменения. -
[indexes](...(number|number[])): Индексы удаляемых элементов.
Возвращает
(Array): Возвращает новый массив удалённых элементов.
Пример
var array = ['a', 'b', 'c', 'd']; var pulled = _.pullAt(array, [1, 3]); console.log(array); // => ['a', 'c'] console.log(pulled); // => ['b', 'd']
_.remove(array, [predicate=_.identity])
Удаляет все элементы из array, для которых predicate возвращает истинное значение, и возвращает массив удалённых элементов. Предикат вызывается с тремя аргументами: (value, index, array).
Примечание: В отличие от _.filter, этот метод мутирует array. Используйте _.pull для удаления элементов из массива по значению.
Начиная с версии
2.0.0
Аргументы
-
array(Array): Массив для изменения. -
[predicate=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(Array): Возвращает новый массив удалённых элементов.
Пример
var array = [1, 2, 3, 4];
var evens = _.remove(array, function(n) {
return n % 2 == 0;
});
console.log(array);
// => [1, 3]
console.log(evens);
// => [2, 4]
_.reverse(array)
Обращает порядок элементов в array так, чтобы первый элемент стал последним, второй — предпоследним и так далее.
Примечание: Этот метод мутирует array и основан на Array#reverse.
Начиная с версии
4.0.0
Аргументы
-
array(Array): Массив для изменения.
Возвращает
(Array): Возвращает array.
Пример
var array = [1, 2, 3]; _.reverse(array); // => [3, 2, 1] console.log(array); // => [3, 2, 1]
_.slice(array, [start=0], [end=array.length])
Создаёт срез array от start до, но не включая, end.
Примечание: Этот метод используется вместо Array#slice для гарантии возврата плотных массивов.
Начиная с версии
3.0.0
Аргументы
-
array(Array): Массив для создания среза. -
[start=0](number): Начальная позиция. -
[end=array.length](number): Конечная позиция.
Возвращает
(Array): Возвращает срез array.
_.sortedIndex(array, value)
Использует бинарный поиск для определения наименьшего индекса, по которому value должно быть вставлено в array для сохранения порядка сортировки.
Начиная с версии
0.1.0
Аргументы
-
array(Array): Проверяемый отсортированный массив. -
value(*): Оцениваемое значение.
Возвращает
(number): Возвращает индекс, по которому value должно быть вставлено в array.
Пример
_.sortedIndex([30, 50], 40); // => 1
_.sortedIndexBy(array, value, [iteratee=_.identity])
Этот метод подобен _.sortedIndex, за исключением того, что он принимает iteratee, которая вызывается для value и каждого элемента array для вычисления их ранга сортировки. Итератор вызывается с одним аргументом: (value).
Начиная с версии
4.0.0
Аргументы
-
array(Array): Проверяемый отсортированный массив. -
value(*): Оцениваемое значение. -
[iteratee=_.identity](Function): Итератор, вызываемый для каждого элемента.
Возвращает
(number): Возвращает индекс, по которому value должно быть вставлено в array.
Пример
var objects = [{ 'x': 4 }, { 'x': 5 }];
_.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
// => 0
// The `_.property` iteratee shorthand.
_.sortedIndexBy(objects, { 'x': 4 }, 'x');
// => 0
_.sortedIndexOf(array, value)
Этот метод подобен _.indexOf, за исключением того, что он выполняет бинарный поиск по отсортированному array.
Начиная с версии
4.0.0
Аргументы
-
array(Array): Проверяемый массив. -
value(*): Искомое значение.
Возвращает
(number): Возвращает индекс найденного значения, иначе -1.
Пример
_.sortedIndexOf([4, 5, 5, 5, 6], 5); // => 1
_.sortedLastIndex(array, value)
Этот метод похож на _.sortedIndex, за исключением того, что он возвращает наибольший индекс, по которому value должно быть вставлено в array для сохранения порядка сортировки.
С версии
3.0.0
Аргументы
-
array(Array): Проверяемый отсортированный массив. -
value(*): Оцениваемое значение.
Возвращает
(number): Возвращает индекс, по которому value должно быть вставлено в array.
Пример
_.sortedLastIndex([4, 5, 5, 5, 6], 5); // => 4
_.sortedLastIndexBy(array, value, [iteratee=_.identity])
Этот метод похож на _.sortedLastIndex, за исключением того, что он принимает iteratee, который вызывается для value и каждого элемента array для вычисления их ранга сортировки. Итератор вызывается с одним аргументом: (value).
С версии
4.0.0
Аргументы
-
array(Array): Проверяемый отсортированный массив. -
value(*): Оцениваемое значение. -
[iteratee=_.identity](Function): Итератор, вызываемый для каждого элемента.
Возвращает
(number): Возвращает индекс, по которому value должно быть вставлено в array.
Пример
var objects = [{ 'x': 4 }, { 'x': 5 }];
_.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
// => 1
// The `_.property` iteratee shorthand.
_.sortedLastIndexBy(objects, { 'x': 4 }, 'x');
// => 1
_.sortedLastIndexOf(array, value)
Этот метод похож на _.lastIndexOf, за исключением того, что он выполняет бинарный поиск по отсортированному array.
С версии
4.0.0
Аргументы
-
array(Array): Проверяемый массив. -
value(*): Искомое значение.
Возвращает
(number): Возвращает индекс найденного значения, иначе -1.
Пример
_.sortedLastIndexOf([4, 5, 5, 5, 6], 5); // => 3
_.sortedUniq(array)
Этот метод похож на _.uniq, за исключением того, что он разработан и оптимизирован для отсортированных массивов.
С версии
4.0.0
Аргументы
-
array(Array): Проверяемый массив.
Возвращает
(Array): Возвращает новый массив без дубликатов.
Пример
_.sortedUniq([1, 1, 2]); // => [1, 2]
_.sortedUniqBy(array, [iteratee])
Этот метод похож на _.uniqBy, за исключением того, что он разработан и оптимизирован для отсортированных массивов.
С версии
4.0.0
Аргументы
-
array(Array): Проверяемый массив. -
[iteratee](Function): Итератор, вызываемый для каждого элемента.
Возвращает
(Array): Возвращает новый массив без дубликатов.
Пример
_.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); // => [1.1, 2.3]
_.tail(array)
Получает все элементы array, кроме первого.
С версии
4.0.0
Аргументы
-
array(Array): Массив для обработки.
Возвращает
(Array): Возвращает срез array.
Пример
_.tail([1, 2, 3]); // => [2, 3]
_.take(array, [n=1])
Создает срез array с n элементами, взятыми с начала.
С версии
0.1.0
Аргументы
-
array(Array): Массив для обработки. -
[n=1](number): Количество извлекаемых элементов.
Возвращает
(Array): Возвращает срез array.
Пример
_.take([1, 2, 3]); // => [1] _.take([1, 2, 3], 2); // => [1, 2] _.take([1, 2, 3], 5); // => [1, 2, 3] _.take([1, 2, 3], 0); // => []
_.takeRight(array, [n=1])
Создает срез array с n элементами, взятыми с конца.
С версии
3.0.0
Аргументы
-
array(Array): Массив для обработки. -
[n=1](number): Количество извлекаемых элементов.
Возвращает
(Array): Возвращает срез array.
Пример
_.takeRight([1, 2, 3]); // => [3] _.takeRight([1, 2, 3], 2); // => [2, 3] _.takeRight([1, 2, 3], 5); // => [1, 2, 3] _.takeRight([1, 2, 3], 0); // => []
_.takeRightWhile(array, [predicate=_.identity])
Создает срез array с элементами, взятыми с конца. Элементы берутся до тех пор, пока predicate возвращает ложное значение. Предикат вызывается с тремя аргументами: (value, index, array).
С версии
3.0.0
Аргументы
-
array(Array): Массив для обработки. -
[predicate=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(Array): Возвращает срез array.
Пример
var users = [
{ 'user': 'barney', 'active': true },
{ 'user': 'fred', 'active': false },
{ 'user': 'pebbles', 'active': false }
];
_.takeRightWhile(users, function(o) { return !o.active; });
// => objects for ['fred', 'pebbles']
// The `_.matches` iteratee shorthand.
_.takeRightWhile(users, { 'user': 'pebbles', 'active': false });
// => objects for ['pebbles']
// The `_.matchesProperty` iteratee shorthand.
_.takeRightWhile(users, ['active', false]);
// => objects for ['fred', 'pebbles']
// The `_.property` iteratee shorthand.
_.takeRightWhile(users, 'active');
// => []
_.takeWhile(array, [predicate=_.identity])
Создает срез array с элементами, взятыми с начала. Элементы берутся до тех пор, пока predicate возвращает ложное значение. Предикат вызывается с тремя аргументами: (value, index, array).
С версии
3.0.0
Аргументы
-
array(Array): Массив для обработки. -
[predicate=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(Array): Возвращает срез array.
Пример
var users = [
{ 'user': 'barney', 'active': false },
{ 'user': 'fred', 'active': false },
{ 'user': 'pebbles', 'active': true }
];
_.takeWhile(users, function(o) { return !o.active; });
// => objects for ['barney', 'fred']
// The `_.matches` iteratee shorthand.
_.takeWhile(users, { 'user': 'barney', 'active': false });
// => objects for ['barney']
// The `_.matchesProperty` iteratee shorthand.
_.takeWhile(users, ['active', false]);
// => objects for ['barney', 'fred']
// The `_.property` iteratee shorthand.
_.takeWhile(users, 'active');
// => []
_.union([arrays])
Создает массив уникальных значений по порядку из всех переданных массивов, используя SameValueZero для сравнения на равенство.
С версии
0.1.0
Аргументы
-
[arrays](...Array): Проверяемые массивы.
Возвращает
(Array): Возвращает новый массив объединенных значений.
Пример
_.union([2], [1, 2]); // => [2, 1]
_.unionBy([arrays], [iteratee=_.identity])
Этот метод похож на _.union, за исключением того, что он принимает iteratee, который вызывается для каждого элемента каждого arrays для вычисления критерия уникальности. Результирующие значения выбираются из первого массива, в котором встречается значение. Итератор вызывается с одним аргументом:
(value).
С версии
4.0.0
Аргументы
-
[arrays](...Array): Проверяемые массивы. -
[iteratee=_.identity](Function): Итератор, вызываемый для каждого элемента.
Возвращает
(Array): Возвращает новый массив объединенных значений.
Пример
_.unionBy([2.1], [1.2, 2.3], Math.floor);
// => [2.1, 1.2]
// The `_.property` iteratee shorthand.
_.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
// => [{ 'x': 1 }, { 'x': 2 }]
_.unionWith([arrays], [comparator])
Этот метод похож на _.union, за исключением того, что он принимает comparator, который вызывается для сравнения элементов arrays. Результирующие значения выбираются из первого массива, в котором встречается значение. Компаратор вызывается с двумя аргументами: (arrVal, othVal).
С версии
4.0.0
Аргументы
-
[arrays](...Array): Проверяемые массивы. -
[comparator](Function): Компаратор, вызываемый для каждого элемента.
Возвращает
(Array): Возвращает новый массив объединенных значений.
Пример
var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
_.unionWith(objects, others, _.isEqual);
// => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
_.uniq(array)
Создает версию массива без дубликатов, используя SameValueZero для сравнения на равенство, в которой сохраняется только первое вхождение каждого элемента. Порядок результирующих значений определяется порядком их появления в массиве.
С версии
0.1.0
Аргументы
-
array(Array): Проверяемый массив.
Возвращает
(Array): Возвращает новый массив без дубликатов.
Пример
_.uniq([2, 1, 2]); // => [2, 1]
_.uniqBy(array, [iteratee=_.identity])
Этот метод похож на _.uniq, за исключением того, что он принимает iteratee, который вызывается для каждого элемента в array для вычисления критерия уникальности. Порядок результирующих значений определяется порядком их появления в массиве. Итератор вызывается с одним аргументом:
(value).
С версии
4.0.0
Аргументы
-
array(Array): Проверяемый массив. -
[iteratee=_.identity](Function): Итератор, вызываемый для каждого элемента.
Возвращает
(Array): Возвращает новый массив без дубликатов.
Пример
_.uniqBy([2.1, 1.2, 2.3], Math.floor);
// => [2.1, 1.2]
// The `_.property` iteratee shorthand.
_.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
// => [{ 'x': 1 }, { 'x': 2 }]
_.uniqWith(array, [comparator])
Этот метод похож на _.uniq, за исключением того, что он принимает comparator, который вызывается для сравнения элементов array. Порядок результирующих значений определяется порядком их появления в массиве. Компаратор вызывается с двумя аргументами: (arrVal, othVal).
С версии
4.0.0
Аргументы
-
array(Array): Проверяемый массив. -
[comparator](Function): Компаратор, вызываемый для каждого элемента.
Возвращает
(Array): Возвращает новый массив без дубликатов.
Пример
var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
_.uniqWith(objects, _.isEqual);
// => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
_.unzip(array)
Этот метод похож на _.zip, за исключением того, что он принимает массив сгруппированных элементов и создает массив, перегруппировывающий элементы в их конфигурацию до группировки методом zip.
С версии
1.2.0
Аргументы
-
array(Array): Массив сгруппированных элементов для обработки.
Возвращает
(Array): Возвращает новый массив перегруппированных элементов.
Пример
var zipped = _.zip(['a', 'b'], [1, 2], [true, false]); // => [['a', 1, true], ['b', 2, false]] _.unzip(zipped); // => [['a', 'b'], [1, 2], [true, false]]
_.unzipWith(array, [iteratee=_.identity])
Этот метод похож на _.unzip, за исключением того, что он принимает iteratee, указывающий, как следует объединять перегруппированные значения. Итератор вызывается с элементами каждой группы: (...group).
С версии
3.8.0
Аргументы
-
array(Array): Массив сгруппированных элементов для обработки. -
[iteratee=_.identity](Function): Функция для объединения перегруппированных значений.
Возвращает
(Array): Возвращает новый массив перегруппированных элементов.
Пример
var zipped = _.zip([1, 2], [10, 20], [100, 200]); // => [[1, 10, 100], [2, 20, 200]] _.unzipWith(zipped, _.add); // => [3, 30, 300]
_.without(array, [values])
Создает массив, исключающий все указанные значения, используя SameValueZero для сравнения на равенство.
Примечание: В отличие от _.pull, этот метод возвращает новый массив.
С версии
0.1.0
Аргументы
-
array(Array): Проверяемый массив. -
[values](...*): Исключаемые значения.
Возвращает
(Array): Возвращает новый массив отфильтрованных значений.
Пример
_.without([2, 1, 2, 3], 1, 2); // => [3]
_.xor([arrays])
Создает массив уникальных значений, представляющий собой симметрическую разность указанных массивов. Порядок результирующих значений определяется порядком их появления в массивах.
С версии
2.4.0
Аргументы
-
[arrays](...Array): Проверяемые массивы.
Возвращает
(Array): Возвращает новый массив отфильтрованных значений.
Пример
_.xor([2, 1], [2, 3]); // => [1, 3]
_.xorBy([arrays], [iteratee=_.identity])
Этот метод похож на _.xor, за исключением того, что он принимает iteratee, который вызывается для каждого элемента каждого arrays для создания критерия, по которому они сравниваются. Порядок результирующих значений определяется порядком их появления в массивах. Итератор вызывается с одним аргументом: (value).
С версии
4.0.0
Аргументы
-
[arrays](...Array): Проверяемые массивы. -
[iteratee=_.identity](Function): Итератор, вызываемый для каждого элемента.
Возвращает
(Array): Возвращает новый массив отфильтрованных значений.
Пример
_.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);
// => [1.2, 3.4]
// The `_.property` iteratee shorthand.
_.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
// => [{ 'x': 2 }]
_.xorWith([arrays], [comparator])
Этот метод похож на _.xor, за исключением того, что он принимает comparator, который вызывается для сравнения элементов arrays. Порядок результирующих значений определяется порядком их появления в массивах. Компаратор вызывается с двумя аргументами: (arrVal, othVal).
С версии
4.0.0
Аргументы
-
[arrays](...Array): Проверяемые массивы. -
[comparator](Function): Компаратор, вызываемый для каждого элемента.
Возвращает
(Array): Возвращает новый массив отфильтрованных значений.
Пример
var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
_.xorWith(objects, others, _.isEqual);
// => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
_.zip([arrays])
Создает массив сгруппированных элементов, первый из которых содержит первые элементы переданных массивов, второй содержит вторые элементы переданных массивов и так далее.
С версии
0.1.0
Аргументы
-
[arrays](...Array): Массивы для обработки.
Возвращает
(Array): Возвращает новый массив сгруппированных элементов.
Пример
_.zip(['a', 'b'], [1, 2], [true, false]); // => [['a', 1, true], ['b', 2, false]]
_.zipObject([props=[]], [values=[]])
Этот метод похож на _.fromPairs, за исключением того, что он принимает два массива: один из идентификаторов свойств, а другой — из соответствующих значений.
С версии
0.4.0
Аргументы
-
[props=[]](Array): Идентификаторы свойств. -
[values=[]](Array): Значения свойств.
Возвращает
(Object): Возвращает новый объект.
Пример
_.zipObject(['a', 'b'], [1, 2]);
// => { 'a': 1, 'b': 2 }
_.zipObjectDeep([props=[]], [values=[]])
Этот метод похож на _.zipObject, за исключением того, что он поддерживает пути к свойствам.
С версии
4.1.0
Аргументы
-
[props=[]](Array): Идентификаторы свойств. -
[values=[]](Array): Значения свойств.
Возвращает
(Object): Возвращает новый объект.
Пример
_.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);
// => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }
_.zipWith([arrays], [iteratee=_.identity])
Этот метод похож на _.zip, за исключением того, что он принимает iteratee, указывающий, как следует объединять сгруппированные значения. Итератор вызывается с элементами каждой группы: (...group).
С версии
3.8.0
Аргументы
-
[arrays](...Array): Массивы для обработки. -
[iteratee=_.identity](Function): Функция для объединения сгруппированных значений.
Возвращает
(Array): Возвращает новый массив сгруппированных элементов.
Пример
_.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {
return a + b + c;
});
// => [111, 222]
Методы «Collection»
_.countBy(collection, [iteratee=_.identity])
Создает объект, состоящий из ключей, сгенерированных на основе результатов прогона каждого элемента collection через iteratee. Соответствующим значением каждого ключа является количество раз, когда этот ключ был возвращен iteratee. Итератор вызывается с одним аргументом: (value).
С версии
0.5.0
Аргументы
-
collection(Array|Object): Коллекция для перебора. -
[iteratee=_.identity](Function): Итератор для преобразования ключей.
Возвращает
(Object): Возвращает составной агрегированный объект.
Пример
_.countBy([6.1, 4.2, 6.3], Math.floor);
// => { '4': 1, '6': 2 }
// The `_.property` iteratee shorthand.
_.countBy(['one', 'two', 'three'], 'length');
// => { '3': 2, '5': 1 }
_.every(collection, [predicate=_.identity])
Проверяет, возвращает ли predicate истинное значение (truthy) для всех элементов collection. Перебор прекращается, как только predicate возвращает ложное значение (falsey). Предикат вызывается с тремя аргументами: (value, index|key, collection).
Примечание: Этот метод возвращает true для пустых коллекций, поскольку для элементов пустых коллекций все истинно.
С версии
0.1.0
Аргументы
-
collection(Array|Object): Коллекция для перебора. -
[predicate=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(boolean): Возвращает true, если все элементы проходят проверку предикатом, иначе false.
Пример
_.every([true, 1, null, 'yes'], Boolean);
// => false
var users = [
{ 'user': 'barney', 'age': 36, 'active': false },
{ 'user': 'fred', 'age': 40, 'active': false }
];
// The `_.matches` iteratee shorthand.
_.every(users, { 'user': 'barney', 'active': false });
// => false
// The `_.matchesProperty` iteratee shorthand.
_.every(users, ['active', false]);
// => true
// The `_.property` iteratee shorthand.
_.every(users, 'active');
// => false
_.filter(collection, [predicate=_.identity])
Перебирает элементы collection, возвращая массив всех элементов, для которых predicate возвращает истинное значение. Предикат вызывается с тремя аргументами: (value, index|key, collection).
Примечание: В отличие от _.remove, этот метод возвращает новый массив.
С версии
0.1.0
Аргументы
-
collection(Array|Object): Коллекция для перебора. -
[predicate=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(Array): Возвращает новый отфильтрованный массив.
Пример
var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'fred', 'age': 40, 'active': false }
];
_.filter(users, function(o) { return !o.active; });
// => objects for ['fred']
// The `_.matches` iteratee shorthand.
_.filter(users, { 'age': 36, 'active': true });
// => objects for ['barney']
// The `_.matchesProperty` iteratee shorthand.
_.filter(users, ['active', false]);
// => objects for ['fred']
// The `_.property` iteratee shorthand.
_.filter(users, 'active');
// => objects for ['barney']
// Combining several predicates using `_.overEvery` or `_.overSome`.
_.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));
// => objects for ['fred', 'barney']
_.find(collection, [predicate=_.identity], [fromIndex=0])
Перебирает элементы collection, возвращая первый элемент, для которого predicate возвращает истинное значение. Предикат вызывается с тремя аргументами: (value, index|key, collection).
С версии
0.1.0
Аргументы
-
collection(Array|Object): Проверяемая коллекция. -
[predicate=_.identity](Function): Функция, вызываемая на каждой итерации. -
[fromIndex=0](number): Индекс, с которого начинается поиск.
Возвращает
(*): Возвращает совпавший элемент, иначе undefined.
Пример
var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'fred', 'age': 40, 'active': false },
{ 'user': 'pebbles', 'age': 1, 'active': true }
];
_.find(users, function(o) { return o.age < 40; });
// => object for 'barney'
// The `_.matches` iteratee shorthand.
_.find(users, { 'age': 1, 'active': true });
// => object for 'pebbles'
// The `_.matchesProperty` iteratee shorthand.
_.find(users, ['active', false]);
// => object for 'fred'
// The `_.property` iteratee shorthand.
_.find(users, 'active');
// => object for 'barney'
_.findLast(collection, [predicate=_.identity], [fromIndex=collection.length-1])
Этот метод похож на _.find, за исключением того, что он перебирает элементы collection справа налево.
С версии
2.0.0
Аргументы
-
collection(Array|Object): Проверяемая коллекция. -
[predicate=_.identity](Function): Функция, вызываемая на каждой итерации. -
[fromIndex=collection.length-1](number): Индекс, с которого начинается поиск.
Возвращает
(*): Возвращает совпавший элемент, иначе undefined.
Пример
_.findLast([1, 2, 3, 4], function(n) {
return n % 2 == 1;
});
// => 3
_.flatMap(collection, [iteratee=_.identity])
Создает плоский массив значений, пропуская каждый элемент collection через iteratee и сглаживая отображенные результаты. Итератор вызывается с тремя аргументами: (value, index|key, collection).
С версии
4.0.0
Аргументы
-
collection(Array|Object): Коллекция для перебора. -
[iteratee=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(Array): Возвращает новый плоский массив.
Пример
function duplicate(n) {
return [n, n];
}
_.flatMap([1, 2], duplicate);
// => [1, 1, 2, 2]
_.flatMapDeep(collection, [iteratee=_.identity])
Этот метод похож на _.flatMap, за исключением того, что он рекурсивно сглаживает отображенные результаты.
С версии
4.7.0
Аргументы
-
collection(Array|Object): Коллекция для перебора. -
[iteratee=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(Array): Возвращает новый плоский массив.
Пример
function duplicate(n) {
return [[[n, n]]];
}
_.flatMapDeep([1, 2], duplicate);
// => [1, 1, 2, 2]
_.flatMapDepth(collection, [iteratee=_.identity], [depth=1])
Этот метод похож на _.flatMap, за исключением того, что он рекурсивно сглаживает отображенные результаты до depth раз.
С версии
4.7.0
Аргументы
-
collection(Array|Object): Коллекция для перебора. -
[iteratee=_.identity](Function): Функция, вызываемая на каждой итерации. -
[depth=1](number): Максимальная глубина рекурсии.
Возвращает
(Array): Возвращает новый плоский массив.
Пример
function duplicate(n) {
return [[[n, n]]];
}
_.flatMapDepth([1, 2], duplicate, 2);
// => [[1, 1], [2, 2]]
_.forEach(collection, [iteratee=_.identity])
Перебирает элементы collection и вызывает iteratee для каждого элемента. Итератор вызывается с тремя аргументами: (value, index|key, collection). Функции итератора могут завершить перебор досрочно, явно вернув false.
Примечание: Как и в других методах «Collections», объекты со свойством «length» перебираются подобно массивам. Чтобы избежать такого поведения, используйте для перебора объектов _.forIn или _.forOwn.
С версии
0.1.0
Псевдонимы
_.each
Аргументы
-
collection(Array|Object): Коллекция для перебора. -
[iteratee=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(*): Возвращает collection.
Пример
_.forEach([1, 2], function(value) {
console.log(value);
});
// => Logs `1` then `2`.
_.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
console.log(key);
});
// => Logs 'a' then 'b' (iteration order is not guaranteed).
_.forEachRight(collection, [iteratee=_.identity])
Этот метод похож на _.forEach, за исключением того, что он перебирает элементы collection справа налево.
С версии
2.0.0
Псевдонимы
_.eachRight
Аргументы
-
collection(Array|Object): Коллекция для перебора. -
[iteratee=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(*): Возвращает collection.
Пример
_.forEachRight([1, 2], function(value) {
console.log(value);
});
// => Logs `2` then `1`.
_.groupBy(collection, [iteratee=_.identity])
Создает объект, состоящий из ключей, сгенерированных на основе результатов прогона каждого элемента collection через iteratee. Порядок сгруппированных значений определяется порядком их появления в collection. Соответствующим значением каждого ключа является массив элементов, сформировавших этот ключ. Итератор вызывается с одним аргументом: (value).
С версии
0.1.0
Аргументы
-
collection(Array|Object): Коллекция для итерации. -
[iteratee=_.identity](Function): Функция-итератор для преобразования ключей.
Возвращает
(Object): Возвращает составной агрегированный объект.
Пример
_.groupBy([6.1, 4.2, 6.3], Math.floor);
// => { '4': [4.2], '6': [6.1, 6.3] }
// The `_.property` iteratee shorthand.
_.groupBy(['one', 'two', 'three'], 'length');
// => { '3': ['one', 'two'], '5': ['three'] }
_.includes(collection, value, [fromIndex=0])
Проверяет, присутствует ли value в collection. Если collection является строкой, выполняется поиск подстроки value, в противном случае для проверки на равенство используется SameValueZero. Если fromIndex отрицательный, он используется как смещение с конца collection.
Начиная с версии
0.1.0
Аргументы
-
collection(Array|Object|string): Коллекция для проверки. -
value(*): Искомое значение. -
[fromIndex=0](number): Индекс, с которого начинается поиск.
Возвращает
(boolean): Возвращает true, если value найдено, иначе false.
Пример
_.includes([1, 2, 3], 1);
// => true
_.includes([1, 2, 3], 1, 2);
// => false
_.includes({ 'a': 1, 'b': 2 }, 1);
// => true
_.includes('abcd', 'bc');
// => true
_.invokeMap(collection, path, [args])
Вызывает метод по пути path для каждого элемента в collection, возвращая массив результатов каждого вызванного метода. Любые дополнительные аргументы передаются каждому вызываемому методу. Если path является функцией, она вызывается для каждого элемента в collection с привязкой этого элемента к this.
Начиная с версии
4.0.0
Аргументы
-
collection(Array|Object): Коллекция для итерации. -
path(Array|Function|string): Путь к вызываемому методу или функция, вызываемая на каждой итерации. -
[args](...*): Аргументы, с которыми вызывается каждый метод.
Возвращает
(Array): Возвращает массив результатов.
Пример
_.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); // => [[1, 5, 7], [1, 2, 3]] _.invokeMap([123, 456], String.prototype.split, ''); // => [['1', '2', '3'], ['4', '5', '6']]
_.keyBy(collection, [iteratee=_.identity])
Создает объект, состоящий из ключей, сгенерированных на основе результатов прогона каждого элемента collection через iteratee. Соответствующим значением каждого ключа является последний элемент, ответственный за генерацию этого ключа. Итератор вызывается с одним аргументом: (value).
Начиная с версии
4.0.0
Аргументы
-
collection(Array|Object): Коллекция для итерации. -
[iteratee=_.identity](Function): Функция-итератор для преобразования ключей.
Возвращает
(Object): Возвращает составной агрегированный объект.
Пример
var array = [
{ 'dir': 'left', 'code': 97 },
{ 'dir': 'right', 'code': 100 }
];
_.keyBy(array, function(o) {
return String.fromCharCode(o.code);
});
// => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
_.keyBy(array, 'dir');
// => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
_.map(collection, [iteratee=_.identity])
Создает массив значений путем прогона каждого элемента в collection через iteratee. Итератор вызывается с тремя аргументами:
(value, index|key, collection).
Многие методы lodash защищены для работы в качестве итераторов для таких методов, как _.every, _.filter, _.map, _.mapValues, _.reject и _.some.
Защищенные методы:ary, chunk, curry, curryRight, drop, dropRight, every, fill, invert, parseInt, random, range, rangeRight, repeat, sampleSize, slice, some, sortBy, split, take, takeRight, template, trim, trimEnd, trimStart и words
Начиная с версии
0.1.0
Аргументы
-
collection(Array|Object): Коллекция для итерации. -
[iteratee=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(Array): Возвращает новый отображенный массив.
Пример
function square(n) {
return n * n;
}
_.map([4, 8], square);
// => [16, 64]
_.map({ 'a': 4, 'b': 8 }, square);
// => [16, 64] (iteration order is not guaranteed)
var users = [
{ 'user': 'barney' },
{ 'user': 'fred' }
];
// The `_.property` iteratee shorthand.
_.map(users, 'user');
// => ['barney', 'fred']
_.orderBy(collection, [iteratees=[_.identity]], [orders])
Этот метод похож на _.sortBy, за исключением того, что он позволяет указывать порядок сортировки для итераторов, по которым выполняется сортировка. Если orders не указан, все значения сортируются по возрастанию. В противном случае укажите порядок "desc" для сортировки по убыванию или "asc" для сортировки по возрастанию соответствующих значений.
Начиная с версии
4.0.0
Аргументы
-
collection(Array|Object): Коллекция для итерации. -
[iteratees=[_.identity]](Array[]|Function[]|Object[]|string[]): Итераторы для сортировки. -
[orders](string[]): Порядок сортировки дляiteratees.
Возвращает
(Array): Возвращает новый отсортированный массив.
Пример
var users = [
{ 'user': 'fred', 'age': 48 },
{ 'user': 'barney', 'age': 34 },
{ 'user': 'fred', 'age': 40 },
{ 'user': 'barney', 'age': 36 }
];
// Sort by `user` in ascending order and by `age` in descending order.
_.orderBy(users, ['user', 'age'], ['asc', 'desc']);
// => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
_.partition(collection, [predicate=_.identity])
Создает массив элементов, разделенных на две группы, первая из которых содержит элементы, для которых predicate возвращает истинное значение (truthy), а вторая содержит элементы, для которых predicate возвращает ложное значение (falsey). Предикат вызывается с одним аргументом: (value).
Начиная с версии
3.0.0
Аргументы
-
collection(Array|Object): Коллекция для итерации. -
[predicate=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(Array): Возвращает массив сгруппированных элементов.
Пример
var users = [
{ 'user': 'barney', 'age': 36, 'active': false },
{ 'user': 'fred', 'age': 40, 'active': true },
{ 'user': 'pebbles', 'age': 1, 'active': false }
];
_.partition(users, function(o) { return o.active; });
// => objects for [['fred'], ['barney', 'pebbles']]
// The `_.matches` iteratee shorthand.
_.partition(users, { 'age': 1, 'active': false });
// => objects for [['pebbles'], ['barney', 'fred']]
// The `_.matchesProperty` iteratee shorthand.
_.partition(users, ['active', false]);
// => objects for [['barney', 'pebbles'], ['fred']]
// The `_.property` iteratee shorthand.
_.partition(users, 'active');
// => objects for [['fred'], ['barney', 'pebbles']]
_.reduce(collection, [iteratee=_.identity], [accumulator])
Сворачивает collection к значению, которое представляет собой накопленный результат прогона каждого элемента в collection через iteratee, где каждому последующему вызову передается возвращаемое значение предыдущего. Если accumulator не указан, первый элемент collection используется в качестве начального значения. Итератор вызывается с четырьмя аргументами:
(accumulator, value, index|key, collection).
Многие методы lodash защищены для работы в качестве итераторов для таких методов, как _.reduce, _.reduceRight и _.transform.
Защищенные методы:assign, defaults, defaultsDeep, includes, merge, orderBy и sortBy
Начиная с версии
0.1.0
Аргументы
-
collection(Array|Object): Коллекция для итерации. -
[iteratee=_.identity](Function): Функция, вызываемая на каждой итерации. -
[accumulator](*): Начальное значение.
Возвращает
(*): Возвращает накопленное значение.
Пример
_.reduce([1, 2], function(sum, n) {
return sum + n;
}, 0);
// => 3
_.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
(result[value] || (result[value] = [])).push(key);
return result;
}, {});
// => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
_.reduceRight(collection, [iteratee=_.identity], [accumulator])
Этот метод похож на _.reduce, за исключением того, что он перебирает элементы collection справа налево.
Начиная с версии
0.1.0
Аргументы
-
collection(Array|Object): Коллекция для итерации. -
[iteratee=_.identity](Function): Функция, вызываемая на каждой итерации. -
[accumulator](*): Начальное значение.
Возвращает
(*): Возвращает накопленное значение.
Пример
var array = [[0, 1], [2, 3], [4, 5]];
_.reduceRight(array, function(flattened, other) {
return flattened.concat(other);
}, []);
// => [4, 5, 2, 3, 0, 1]
_.reject(collection, [predicate=_.identity])
Противоположность _.filter; этот метод возвращает элементы коллекции collection, для которых predicate не возвращает истинное значение (truthy).
Начиная с версии
0.1.0
Аргументы
-
collection(Array|Object): Коллекция для итерации. -
[predicate=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(Array): Возвращает новый отфильтрованный массив.
Пример
var users = [
{ 'user': 'barney', 'age': 36, 'active': false },
{ 'user': 'fred', 'age': 40, 'active': true }
];
_.reject(users, function(o) { return !o.active; });
// => objects for ['fred']
// The `_.matches` iteratee shorthand.
_.reject(users, { 'age': 40, 'active': true });
// => objects for ['barney']
// The `_.matchesProperty` iteratee shorthand.
_.reject(users, ['active', false]);
// => objects for ['fred']
// The `_.property` iteratee shorthand.
_.reject(users, 'active');
// => objects for ['barney']
_.sample(collection)
Получает случайный элемент из collection.
Начиная с версии
2.0.0
Аргументы
-
collection(Array|Object): Коллекция для выборки.
Возвращает
(*): Возвращает случайный элемент.
Пример
_.sample([1, 2, 3, 4]); // => 2
_.sampleSize(collection, [n=1])
Получает n случайных элементов по уникальным ключам из collection вплоть до размера collection.
Начиная с версии
4.0.0
Аргументы
-
collection(Array|Object): Коллекция для выборки. -
[n=1](number): Количество элементов для выборки.
Возвращает
(Array): Возвращает случайные элементы.
Пример
_.sampleSize([1, 2, 3], 2); // => [3, 1] _.sampleSize([1, 2, 3], 4); // => [2, 3, 1]
_.shuffle(collection)
Создает массив перемешанных значений, используя версию алгоритма тасования Фишера — Йетса.
Начиная с версии
0.1.0
Аргументы
-
collection(Array|Object): Коллекция для перемешивания.
Возвращает
(Array): Возвращает новый перемешанный массив.
Пример
_.shuffle([1, 2, 3, 4]); // => [4, 1, 3, 2]
_.size(collection)
Получает размер collection, возвращая его длину для массивоподобных значений или количество собственных перечислимых строковых свойств для объектов.
Начиная с версии
0.1.0
Аргументы
-
collection(Array|Object|string): Коллекция для проверки.
Возвращает
(number): Возвращает размер коллекции.
Пример
_.size([1, 2, 3]);
// => 3
_.size({ 'a': 1, 'b': 2 });
// => 2
_.size('pebbles');
// => 7
_.some(collection, [predicate=_.identity])
Проверяет, возвращает ли predicate истинное значение (truthy) для любого элемента collection. Итерация прекращается, как только predicate возвращает truthy. Предикат вызывается с тремя аргументами: (value, index|key, collection).
Начиная с версии
0.1.0
Аргументы
-
collection(Array|Object): Коллекция для итерации. -
[predicate=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(boolean): Возвращает true, если какой-либо элемент проходит проверку предикатом, иначе false.
Пример
_.some([null, 0, 'yes', false], Boolean);
// => true
var users = [
{ 'user': 'barney', 'active': true },
{ 'user': 'fred', 'active': false }
];
// The `_.matches` iteratee shorthand.
_.some(users, { 'user': 'barney', 'active': false });
// => false
// The `_.matchesProperty` iteratee shorthand.
_.some(users, ['active', false]);
// => true
// The `_.property` iteratee shorthand.
_.some(users, 'active');
// => true
_.sortBy(collection, [iteratees=[_.identity]])
Создает массив элементов, отсортированных по возрастанию на основе результатов прогона каждого элемента коллекции через каждый итератор. Этот метод выполняет стабильную сортировку, то есть сохраняет исходный порядок равных элементов. Итераторы вызываются с одним аргументом: (value).
Начиная с версии
0.1.0
Аргументы
-
collection(Array|Object): Коллекция для итерации. -
[iteratees=[_.identity]](...(Function|Function[])): Итераторы для сортировки.
Возвращает
(Array): Возвращает новый отсортированный массив.
Пример
var users = [
{ 'user': 'fred', 'age': 48 },
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 30 },
{ 'user': 'barney', 'age': 34 }
];
_.sortBy(users, [function(o) { return o.user; }]);
// => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]
_.sortBy(users, ['user', 'age']);
// => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]
Методы «Date»
_.now()
Получает временную метку количества миллисекунд, прошедших с эпохи Unix (1 января 1970 00:00:00 UTC).
Начиная с версии
2.4.0
Возвращает
(number): Возвращает временную метку.
Пример
_.defer(function(stamp) {
console.log(_.now() - stamp);
}, _.now());
// => Logs the number of milliseconds it took for the deferred invocation.
Методы «Function»
_.after(n, func)
Противоположность _.before; этот метод создает функцию, которая вызывает func, как только она будет вызвана n или более раз.
Начиная с версии
0.1.0
Аргументы
-
n(number): Количество вызовов до того, какfuncбудет вызвана. -
func(Function): Функция для ограничения.
Возвращает
(Function): Возвращает новую ограниченную функцию.
Пример
var saves = ['profile', 'settings'];
var done = _.after(saves.length, function() {
console.log('done saving!');
});
_.forEach(saves, function(type) {
asyncSave({ 'type': type, 'complete': done });
});
// => Logs 'done saving!' after the two async saves have completed.
_.ary(func, [n=func.length])
Создает функцию, которая вызывает func с количеством аргументов не более n, игнорируя любые дополнительные аргументы.
Начиная с версии
3.0.0
Аргументы
-
func(Function): Функция, для которой ограничиваются аргументы. -
[n=func.length](number): Ограничение арности.
Возвращает
(Function): Возвращает новую ограниченную функцию.
Пример
_.map(['6', '8', '10'], _.ary(parseInt, 1)); // => [6, 8, 10]
_.before(n, func)
Создает функцию, которая вызывает func с привязкой this и аргументами созданной функции, пока она вызывается менее чем n раз. Последующие вызовы созданной функции возвращают результат последнего вызова func.
Начиная с версии
3.0.0
Аргументы
-
n(number): Количество вызовов, при достижении которогоfuncбольше не вызывается. -
func(Function): Функция для ограничения.
Возвращает
(Function): Возвращает новую ограниченную функцию.
Пример
jQuery(element).on('click', _.before(5, addContactToList));
// => Allows adding up to 4 contacts to the list.
_.bind(func, thisArg, [partials])
Создает функцию, которая вызывает func с привязкой this к thisArg и с partials, добавляемыми в начало получаемых ею аргументов.
Значение _.bind.placeholder, которое по умолчанию равно _ в монолитных сборках, может использоваться как заполнитель (placeholder) для частично примененных аргументов.
Примечание: В отличие от нативного Function#bind, этот метод не задает свойство "length" привязанных функций.
Начиная с версии
0.1.0
Аргументы
-
func(Function): Функция для привязки. -
thisArg(*): Привязкаthisдляfunc. -
[partials](...*): Аргументы для частичного применения.
Возвращает
(Function): Возвращает новую привязанную функцию.
Пример
function greet(greeting, punctuation) {
return greeting + ' ' + this.user + punctuation;
}
var object = { 'user': 'fred' };
var bound = _.bind(greet, object, 'hi');
bound('!');
// => 'hi fred!'
// Bound with placeholders.
var bound = _.bind(greet, object, _, '!');
bound('hi');
// => 'hi fred!'
_.bindKey(object, key, [partials])
Создает функцию, которая вызывает метод по ключу object[key] с partials, добавляемыми в начало получаемых ею аргументов.
Этот метод отличается от _.bind тем, что позволяет привязанным функциям ссылаться на методы, которые могут быть переопределены или еще не существуют. Подробнее см. статью Питера Мишо (Peter Michaux).
Значение _.bindKey.placeholder, которое по умолчанию равно _ в монолитных сборках, может использоваться как заполнитель для частично примененных аргументов.
Начиная с версии
0.10.0
Аргументы
-
object(Object): Объект, для которого вызывается метод. -
key(string): Ключ метода. -
[partials](...*): Аргументы для частичного применения.
Возвращает
(Function): Возвращает новую привязанную функцию.
Пример
var object = {
'user': 'fred',
'greet': function(greeting, punctuation) {
return greeting + ' ' + this.user + punctuation;
}
};
var bound = _.bindKey(object, 'greet', 'hi');
bound('!');
// => 'hi fred!'
object.greet = function(greeting, punctuation) {
return greeting + 'ya ' + this.user + punctuation;
};
bound('!');
// => 'hiya fred!'
// Bound with placeholders.
var bound = _.bindKey(object, 'greet', _, '!');
bound('hi');
// => 'hiya fred!'
_.curry(func, [arity=func.length])
Создает функцию, которая принимает аргументы func и либо вызывает func, возвращая её результат (если было передано как минимум arity аргументов), либо возвращает функцию, которая принимает оставшиеся аргументы func, и так далее. Арность func может быть указана, если func.length недостаточно.
Значение _.curry.placeholder, которое по умолчанию равно _ в монолитных сборках, может использоваться в качестве заполнителя для переданных аргументов.
Примечание: Этот метод не задает свойство "length" каррированных функций.
Начиная с версии
2.0.0
Аргументы
-
func(Function): Функция для каррирования. -
[arity=func.length](number): Арностьfunc.
Возвращает
(Function): Возвращает новую каррированную функцию.
Пример
var abc = function(a, b, c) {
return [a, b, c];
};
var curried = _.curry(abc);
curried(1)(2)(3);
// => [1, 2, 3]
curried(1, 2)(3);
// => [1, 2, 3]
curried(1, 2, 3);
// => [1, 2, 3]
// Curried with placeholders.
curried(1)(_, 3)(2);
// => [1, 2, 3]
_.curryRight(func, [arity=func.length])
Этот метод похож на _.curry, за исключением того, что аргументы применяются к func по аналогии с _.partialRight вместо _.partial.
Значение _.curryRight.placeholder, которое по умолчанию равно _ в монолитных сборках, может использоваться в качестве заполнителя для переданных аргументов.
Примечание: Этот метод не задает свойство "length" каррированных функций.
Начиная с версии
3.0.0
Аргументы
-
func(Function): Функция для каррирования. -
[arity=func.length](number): Арностьfunc.
Возвращает
(Function): Возвращает новую каррированную функцию.
Пример
var abc = function(a, b, c) {
return [a, b, c];
};
var curried = _.curryRight(abc);
curried(3)(2)(1);
// => [1, 2, 3]
curried(2, 3)(1);
// => [1, 2, 3]
curried(1, 2, 3);
// => [1, 2, 3]
// Curried with placeholders.
curried(3)(1, _)(2);
// => [1, 2, 3]
_.debounce(func, [wait=0], [options={}])
Создает debounced-функцию (функцию с устранением дребезга), которая откладывает вызов func до тех пор, пока не пройдет wait миллисекунд с момента последнего вызова debounced-функции. Debounced-функция снабжена методом cancel для отмены отложенных вызовов func и методом flush для их немедленного вызова. Передайте options, чтобы указать, должна ли func вызываться по переднему (leading) и/или заднему (trailing) фронту таймаута wait. Функция func вызывается с последними аргументами, переданными debounced-функции. Последующие вызовы debounced-функции возвращают результат последнего вызова func.
Примечание: Если параметры leading и trailing равны true, func вызывается по заднему фронту таймаута только в том случае, если debounced-функция вызывается более одного раза в течение таймаута wait.
Если wait равно 0, а leading равно false, вызов func откладывается до следующего тика, аналогично setTimeout с таймаутом 0.
См. статью Дэвида Корбачо (David Corbacho) для получения подробной информации о различиях между _.debounce и _.throttle.
Начиная с версии
0.1.0
Аргументы
-
func(Function): Функция для устранения дребезга. -
[wait=0](number): Количество миллисекунд задержки. -
[options={}](Object): Объект с параметрами. -
[options.leading=false](boolean): Указывает, следует ли вызывать по переднему фронту таймаута. -
[options.maxWait](number): Максимальное время, на которое может быть отложен вызовfuncперед его выполнением. -
[options.trailing=true](boolean): Указывает, следует ли вызывать по заднему фронту таймаута.
Возвращает
(Function): Возвращает новую функцию с устранением дребезга (debounced).
Пример
// Avoid costly calculations while the window size is in flux.
jQuery(window).on('resize', _.debounce(calculateLayout, 150));
// Invoke `sendMail` when clicked, debouncing subsequent calls.
jQuery(element).on('click', _.debounce(sendMail, 300, {
'leading': true,
'trailing': false
}));
// Ensure `batchLog` is invoked once after 1 second of debounced calls.
var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
var source = new EventSource('/stream');
jQuery(source).on('message', debounced);
// Cancel the trailing debounced invocation.
jQuery(window).on('popstate', debounced.cancel);
_.defer(func, [args])
Откладывает вызов func до тех пор, пока текущий стек вызовов не будет очищен. Любые дополнительные аргументы передаются в func при ее вызове.
Начиная с версии
0.1.0
Аргументы
-
func(Function): Функция, вызов которой необходимо отложить. -
[args](...*): Аргументы, с которыми вызываетсяfunc.
Возвращает
(number): Возвращает идентификатор таймера.
Пример
_.defer(function(text) {
console.log(text);
}, 'deferred');
// => Logs 'deferred' after one millisecond.
_.delay(func, wait, [args])
Вызывает func через wait миллисекунд. Любые дополнительные аргументы передаются в func при ее вызове.
Начиная с версии
0.1.0
Аргументы
-
func(Function): Функция для задержки. -
wait(number): Количество миллисекунд, на которое задерживается вызов. -
[args](...*): Аргументы, с которыми вызываетсяfunc.
Возвращает
(number): Возвращает идентификатор таймера.
Пример
_.delay(function(text) {
console.log(text);
}, 1000, 'later');
// => Logs 'later' after one second.
_.flip(func)
Создает функцию, которая вызывает func с перевернутыми аргументами.
Начиная с версии
4.0.0
Аргументы
-
func(Function): Функция, для которой переворачиваются аргументы.
Возвращает
(Function): Возвращает новую функцию с перевернутым порядком аргументов.
Пример
var flipped = _.flip(function() {
return _.toArray(arguments);
});
flipped('a', 'b', 'c', 'd');
// => ['d', 'c', 'b', 'a']
_.memoize(func, [resolver])
Создает функцию, которая мемоизирует результат func. Если предоставлен resolver, он определяет ключ кэша для сохранения результата на основе аргументов, переданных мемоизированной функции. По умолчанию в качестве ключа кэша карты используется первый аргумент, переданный мемоизированной функции. func вызывается с привязкой this мемоизированной функции.
Примечание: Кэш доступен как свойство cache у мемоизированной функции. Его создание можно настроить, заменив конструктор _.memoize.Cache конструктором, экземпляры которого реализуют интерфейс методов Map: clear, delete, get, has и set.
Начиная с версии
0.1.0
Аргументы
-
func(Function): Функция, результат выполнения которой должен быть мемоизирован. -
[resolver](Function): Функция для определения ключа кэша.
Возвращает
(Function): Возвращает новую мемоизированную функцию.
Пример
var object = { 'a': 1, 'b': 2 };
var other = { 'c': 3, 'd': 4 };
var values = _.memoize(_.values);
values(object);
// => [1, 2]
values(other);
// => [3, 4]
object.a = 2;
values(object);
// => [1, 2]
// Modify the result cache.
values.cache.set(object, ['a', 'b']);
values(object);
// => ['a', 'b']
// Replace `_.memoize.Cache`.
_.memoize.Cache = WeakMap;
_.negate(predicate)
Создает функцию, которая инвертирует результат предиката func. Предикат func вызывается с привязкой this и аргументами созданной функции.
Начиная с версии
3.0.0
Аргументы
-
predicate(Function): Предикат для инвертирования.
Возвращает
(Function): Возвращает новую инвертированную функцию.
Пример
function isEven(n) {
return n % 2 == 0;
}
_.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
// => [1, 3, 5]
_.once(func)
Создает функцию, вызов которой ограничен вызовом func только один раз. Повторные вызовы функции возвращают значение первого вызова. Функция func вызывается с привязкой this и аргументами созданной функции.
Начиная с версии
0.1.0
Аргументы
-
func(Function): Функция для ограничения.
Возвращает
(Function): Возвращает новую ограниченную функцию.
Пример
var initialize = _.once(createApplication); initialize(); initialize(); // => `createApplication` is invoked once
_.overArgs(func, [transforms=[_.identity]])
Создает функцию, которая вызывает func с преобразованными аргументами.
Начиная с версии
4.0.0
Аргументы
-
func(Function): Функция для оборачивания. -
[transforms=[_.identity]](...(Function|Function[])): Преобразования аргументов.
Возвращает
(Function): Возвращает новую функцию.
Пример
function doubled(n) {
return n * 2;
}
function square(n) {
return n * n;
}
var func = _.overArgs(function(x, y) {
return [x, y];
}, [square, doubled]);
func(9, 3);
// => [81, 6]
func(10, 5);
// => [100, 10]
_.partial(func, [partials])
Создаёт функцию, которая вызывает func с добавлением partials в начало получаемых аргументов. Этот метод аналогичен _.bind, за исключением того, что он не изменяет привязку this.
Значение _.partial.placeholder, которое по умолчанию равно _ в монолитных сборках, может использоваться в качестве заполнителя для частично применённых аргументов.
Примечание: Этот метод не устанавливает свойство "length" частично применённых функций.
Начиная с версии
0.2.0
Аргументы
-
func(Function): Функция для частичного применения аргументов. -
[partials](...*): Аргументы для частичного применения.
Возвращает
(Function): Возвращает новую частично применённую функцию.
Пример
function greet(greeting, name) {
return greeting + ' ' + name;
}
var sayHelloTo = _.partial(greet, 'hello');
sayHelloTo('fred');
// => 'hello fred'
// Partially applied with placeholders.
var greetFred = _.partial(greet, _, 'fred');
greetFred('hi');
// => 'hi fred'
_.partialRight(func, [partials])
Этот метод аналогичен _.partial, за исключением того, что частично применённые аргументы добавляются в конец получаемых аргументов.
Значение _.partialRight.placeholder, которое по умолчанию равно _ в монолитных сборках, может использоваться в качестве заполнителя для частично применённых аргументов.
Примечание: Этот метод не устанавливает свойство "length" частично применённых функций.
Начиная с версии
1.0.0
Аргументы
-
func(Function): Функция для частичного применения аргументов. -
[partials](...*): Аргументы для частичного применения.
Возвращает
(Function): Возвращает новую частично применённую функцию.
Пример
function greet(greeting, name) {
return greeting + ' ' + name;
}
var greetFred = _.partialRight(greet, 'fred');
greetFred('hi');
// => 'hi fred'
// Partially applied with placeholders.
var sayHelloTo = _.partialRight(greet, 'hello', _);
sayHelloTo('fred');
// => 'hello fred'
_.rearg(func, indexes)
Создаёт функцию, которая вызывает func с аргументами, упорядоченными в соответствии с указанными indexes, где значение аргумента по первому индексу передаётся в качестве первого аргумента, значение аргумента по второму индексу — в качестве второго аргумента и так далее.
Начиная с версии
3.0.0
Аргументы
-
func(Function): Функция, для которой переупорядочиваются аргументы. -
indexes(...(number|number[])): Индексы упорядоченных аргументов.
Возвращает
(Function): Возвращает новую функцию.
Пример
var rearged = _.rearg(function(a, b, c) {
return [a, b, c];
}, [2, 0, 1]);
rearged('b', 'c', 'a')
// => ['a', 'b', 'c']
_.rest(func, [start=func.length-1])
Создаёт функцию, которая вызывает func с привязкой this созданной функции и аргументами, начиная с start и далее, переданными в виде массива.
Примечание: Этот метод основан на остаточных параметрах (rest parameter).
Начиная с версии
4.0.0
Аргументы
-
func(Function): Функция, к которой применяется rest-параметр. -
[start=func.length-1](number): Начальная позиция rest-параметра.
Возвращает
(Function): Возвращает новую функцию.
Пример
var say = _.rest(function(what, names) {
return what + ' ' + _.initial(names).join(', ') +
(_.size(names) > 1 ? ', & ' : '') + _.last(names);
});
say('hello', 'fred', 'barney', 'pebbles');
// => 'hello fred, barney, & pebbles'
_.spread(func, [start=0])
Создаёт функцию, которая вызывает func с привязкой this созданной функции и массивом аргументов наподобие Function#apply.
Примечание: Этот метод основан на операторе расширения (spread operator).
Начиная с версии
3.2.0
Аргументы
-
func(Function): Функция, для которой разворачиваются аргументы. -
[start=0](number): Начальная позиция разворачивания.
Возвращает
(Function): Возвращает новую функцию.
Пример
var say = _.spread(function(who, what) {
return who + ' says ' + what;
});
say(['fred', 'hello']);
// => 'fred says hello'
var numbers = Promise.all([
Promise.resolve(40),
Promise.resolve(36)
]);
numbers.then(_.spread(function(x, y) {
return x + y;
}));
// => a Promise of 76
_.throttle(func, [wait=0], [options={}])
Создаёт throttled-функцию, которая вызывает func максимум один раз за каждые wait миллисекунд. Throttled-функция поставляется с методом cancel для отмены отложенных вызовов func и методом flush для их немедленного вызова. Укажите options, чтобы определить, должна ли func вызываться по переднему и/или заднему фронту таймаута wait. Функция func вызывается с последними аргументами, переданными в throttled-функцию. Последующие вызовы throttled-функции возвращают результат последнего вызова func.
Примечание: Если параметры leading и trailing установлены в true, func вызывается по заднему фронту таймаута, только если throttled-функция вызывается более одного раза за время таймаута wait.
Если wait равно 0, а leading — false, вызов func откладывается до следующего тика, аналогично setTimeout с таймаутом 0.
Смотрите статью Дэвида Корбачо для подробностей о различиях между _.throttle и _.debounce.
Начиная с версии
0.1.0
Аргументы
-
func(Function): Функция, для которой ограничивается частота вызовов. -
[wait=0](number): Количество миллисекунд для ограничения вызовов. -
[options={}](Object): Объект параметров. -
[options.leading=true](boolean): Указывает на необходимость вызова по переднему фронту таймаута. -
[options.trailing=true](boolean): Указывает на необходимость вызова по заднему фронту таймаута.
Возвращает
(Function): Возвращает новую throttled-функцию.
Пример
// Avoid excessively updating the position while scrolling.
jQuery(window).on('scroll', _.throttle(updatePosition, 100));
// Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
jQuery(element).on('click', throttled);
// Cancel the trailing throttled invocation.
jQuery(window).on('popstate', throttled.cancel);
_.unary(func)
Создаёт функцию, принимающую максимум один аргумент и игнорирующую любые дополнительные аргументы.
Начиная с версии
4.0.0
Аргументы
-
func(Function): Функция, для которой ограничивается количество аргументов.
Возвращает
(Function): Возвращает новую функцию с ограниченным количеством аргументов.
Пример
_.map(['6', '8', '10'], _.unary(parseInt)); // => [6, 8, 10]
_.wrap(value, [wrapper=identity])
Создаёт функцию, которая передаёт value в wrapper в качестве первого аргумента. Любые дополнительные аргументы, переданные в функцию, добавляются к тем, что передаются в wrapper. Обёртка вызывается с привязкой this созданной функции.
Начиная с версии
0.1.0
Аргументы
-
value(*): Оборачиваемое значение. -
[wrapper=identity](Function): Функция-обёртка.
Возвращает
(Function): Возвращает новую функцию.
Пример
var p = _.wrap(_.escape, function(func, text) {
return '<p>' + func(text) + '</p>';
});
p('fred, barney, & pebbles');
// => '<p>fred, barney, & pebbles</p>'
Методы «Lang»
_.castArray(value)
Приводит value к массиву, если оно им не является.
Начиная с версии
4.4.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(Array): Возвращает приведённый массив.
Пример
_.castArray(1);
// => [1]
_.castArray({ 'a': 1 });
// => [{ 'a': 1 }]
_.castArray('abc');
// => ['abc']
_.castArray(null);
// => [null]
_.castArray(undefined);
// => [undefined]
_.castArray();
// => []
var array = [1, 2, 3];
console.log(_.castArray(array) === array);
// => true
_.clone(value)
Создаёт поверхностный клон value.
Примечание: Этот метод частично основан на алгоритме структурированного клонирования и поддерживает клонирование массивов, буферов массивов, логических значений, объектов дат, коллекций Map, чисел, объектов Object, регулярных выражений, коллекций Set, строк, символов и типизированных массивов. Собственные перечисляемые свойства объектов arguments клонируются как простые объекты. Для значений, не подлежащих клонированию, таких как объекты ошибок, функции, DOM-узлы и WeakMap, возвращается пустой объект.
Начиная с версии
0.1.0
Аргументы
-
value(*): Клонируемое значение.
Возвращает
(*): Возвращает клонированное значение.
Пример
var objects = [{ 'a': 1 }, { 'b': 2 }];
var shallow = _.clone(objects);
console.log(shallow[0] === objects[0]);
// => true
_.cloneDeep(value)
Этот метод аналогичен _.clone, за исключением того, что он рекурсивно клонирует value.
Начиная с версии
1.0.0
Аргументы
-
value(*): Рекурсивно клонируемое значение.
Возвращает
(*): Возвращает глубоко клонированное значение.
Пример
var objects = [{ 'a': 1 }, { 'b': 2 }];
var deep = _.cloneDeep(objects);
console.log(deep[0] === objects[0]);
// => false
_.cloneDeepWith(value, [customizer])
Этот метод аналогичен _.cloneWith, за исключением того, что он рекурсивно клонирует value.
Начиная с версии
4.0.0
Аргументы
-
value(*): Рекурсивно клонируемое значение. -
[customizer](Function): Функция для настройки клонирования.
Возвращает
(*): Возвращает глубоко клонированное значение.
Пример
function customizer(value) {
if (_.isElement(value)) {
return value.cloneNode(true);
}
}
var el = _.cloneDeepWith(document.body, customizer);
console.log(el === document.body);
// => false
console.log(el.nodeName);
// => 'BODY'
console.log(el.childNodes.length);
// => 20
_.cloneWith(value, [customizer])
Этот метод аналогичен _.clone, за исключением того, что он принимает customizer, которая вызывается для создания клонированного значения. Если customizer возвращает undefined, клонирование выполняется методом по умолчанию. Функция customizer вызывается максимум с четырьмя аргументами: (value [, index|key, object, stack]).
Начиная с версии
4.0.0
Аргументы
-
value(*): Клонируемое значение. -
[customizer](Function): Функция для настройки клонирования.
Возвращает
(*): Возвращает клонированное значение.
Пример
function customizer(value) {
if (_.isElement(value)) {
return value.cloneNode(false);
}
}
var el = _.cloneWith(document.body, customizer);
console.log(el === document.body);
// => false
console.log(el.nodeName);
// => 'BODY'
console.log(el.childNodes.length);
// => 0
_.conformsTo(object, source)
Проверяет, соответствует ли object критериям source, вызывая предикатные свойства объекта source с соответствующими значениями свойств объекта object.
Примечание: Этот метод эквивалентен _.conforms, если к нему частично применён source.
Начиная с версии
4.14.0
Аргументы
-
object(Object): Проверяемый объект. -
source(Object): Объект предикатов свойств, которым должно соответствовать значение.
Возвращает
(boolean): Возвращает true, если object соответствует, иначе false.
Пример
var object = { 'a': 1, 'b': 2 };
_.conformsTo(object, { 'b': function(n) { return n > 1; } });
// => true
_.conformsTo(object, { 'b': function(n) { return n > 2; } });
// => false
_.eq(value, other)
Выполняет сравнение двух значений по алгоритму SameValueZero, чтобы определить, эквивалентны ли они.
Начиная с версии
4.0.0
Аргументы
-
value(*): Сравниваемое значение. -
other(*): Другое сравниваемое значение.
Возвращает
(boolean): Возвращает true, если значения эквивалентны, иначе false.
Пример
var object = { 'a': 1 };
var other = { 'a': 1 };
_.eq(object, object);
// => true
_.eq(object, other);
// => false
_.eq('a', 'a');
// => true
_.eq('a', Object('a'));
// => false
_.eq(NaN, NaN);
// => true
_.gt(value, other)
Проверяет, больше ли value, чем other.
Начиная с версии
3.9.0
Аргументы
-
value(*): Сравниваемое значение. -
other(*): Другое сравниваемое значение.
Возвращает
(boolean): Возвращает true, если value больше other, иначе false.
Пример
_.gt(3, 1); // => true _.gt(3, 3); // => false _.gt(1, 3); // => false
_.gte(value, other)
Проверяет, больше или равно value значению other.
Начиная с версии
3.9.0
Аргументы
-
value(*): Сравниваемое значение. -
other(*): Другое сравниваемое значение.
Возвращает
(boolean): Возвращает true, если value больше или равно other, иначе false.
Пример
_.gte(3, 1); // => true _.gte(3, 3); // => true _.gte(1, 3); // => false
_.isArguments(value)
Проверяет, похож ли value на объект arguments.
Начиная с версии
0.1.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является объектом arguments, иначе false.
Пример
_.isArguments(function() { return arguments; }());
// => true
_.isArguments([1, 2, 3]);
// => false
_.isArray(value)
Проверяет, классифицируется ли value как объект Array.
Начиная с версии
0.1.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является массивом, иначе false.
Пример
_.isArray([1, 2, 3]);
// => true
_.isArray(document.body.children);
// => false
_.isArray('abc');
// => false
_.isArray(_.noop);
// => false
_.isArrayBuffer(value)
Проверяет, классифицируется ли value как объект ArrayBuffer.
Начиная с версии
4.3.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является буфером массива, иначе false.
Пример
_.isArrayBuffer(new ArrayBuffer(2)); // => true _.isArrayBuffer(new Array(2)); // => false
_.isArrayLike(value)
Проверяет, является ли value массивоподобным. Значение считается массивоподобным, если оно не является функцией и имеет value.length, представляющее собой целое число, которое больше или равно 0 и меньше или равно Number.MAX_SAFE_INTEGER.
Начиная с версии
4.0.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value массивоподобно, иначе false.
Пример
_.isArrayLike([1, 2, 3]);
// => true
_.isArrayLike(document.body.children);
// => true
_.isArrayLike('abc');
// => true
_.isArrayLike(_.noop);
// => false
_.isArrayLikeObject(value)
Этот метод аналогичен _.isArrayLike, за исключением того, что он также проверяет, является ли value объектом.
Начиная с версии
4.0.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является массивоподобным объектом, иначе false.
Пример
_.isArrayLikeObject([1, 2, 3]);
// => true
_.isArrayLikeObject(document.body.children);
// => true
_.isArrayLikeObject('abc');
// => false
_.isArrayLikeObject(_.noop);
// => false
_.isBoolean(value)
Проверяет, классифицируется ли value как логический примитив или объект.
Начиная с версии
0.1.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является логическим значением, иначе false.
Пример
_.isBoolean(false); // => true _.isBoolean(null); // => false
_.isBuffer(value)
Проверяет, является ли value буфером.
Начиная с версии
4.3.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является буфером, иначе false.
Пример
_.isBuffer(new Buffer(2)); // => true _.isBuffer(new Uint8Array(2)); // => false
_.isDate(value)
Проверяет, классифицируется ли value как объект Date.
Начиная с версии
0.1.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является объектом даты, иначе false.
Пример
_.isDate(new Date);
// => true
_.isDate('Mon April 23 2012');
// => false
_.isElement(value)
Проверяет, похож ли value на элемент DOM.
Начиная с версии
0.1.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является элементом DOM, иначе false.
Пример
_.isElement(document.body);
// => true
_.isElement('<body>');
// => false
_.isEmpty(value)
Проверяет, является ли value пустым объектом, коллекцией, коллекцией Map или Set.
Объекты считаются пустыми, если у них нет собственных перечисляемых свойств со строковыми ключами.
Массивоподобные значения, такие как объекты arguments, массивы, буферы, строки или jQuery-подобные коллекции, считаются пустыми, если их length равно 0. Аналогично, коллекции Map и Set считаются пустыми, если их size равно 0.
Начиная с версии
0.1.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value пусто, иначе false.
Пример
_.isEmpty(null);
// => true
_.isEmpty(true);
// => true
_.isEmpty(1);
// => true
_.isEmpty([1, 2, 3]);
// => false
_.isEmpty({ 'a': 1 });
// => false
_.isEqual(value, other)
Выполняет глубокое сравнение двух значений, чтобы определить, эквивалентны ли они.
Примечание: Этот метод поддерживает сравнение массивов, буферов массивов, логических значений, объектов дат, объектов ошибок, коллекций Map, чисел, объектов Object, регулярных выражений, коллекций Set, строк, символов и типизированных массивов. Объекты Object сравниваются по собственным, а не унаследованным перечисляемым свойствам. Функции и DOM-узлы сравниваются по строгому равенству, т.е. ===.
Начиная с версии
0.1.0
Аргументы
-
value(*): Сравниваемое значение. -
other(*): Другое сравниваемое значение.
Возвращает
(boolean): Возвращает true, если значения эквивалентны, иначе false.
Пример
var object = { 'a': 1 };
var other = { 'a': 1 };
_.isEqual(object, other);
// => true
object === other;
// => false
_.isEqualWith(value, other, [customizer])
Этот метод аналогичен _.isEqual, за исключением того, что он принимает customizer, которая вызывается для сравнения значений. Если customizer возвращает undefined, сравнение выполняется методом по умолчанию. Функция customizer вызывается максимум с шестью аргументами: (objValue, othValue [, index|key, object, other, stack]).
Начиная с версии
4.0.0
Аргументы
-
value(*): Сравниваемое значение. -
other(*): Другое сравниваемое значение. -
[customizer](Function): Функция для настройки сравнения.
Возвращает
(boolean): Возвращает true, если значения эквивалентны, иначе false.
Пример
function isGreeting(value) {
return /^h(?:i|ello)$/.test(value);
}
function customizer(objValue, othValue) {
if (isGreeting(objValue) && isGreeting(othValue)) {
return true;
}
}
var array = ['hello', 'goodbye'];
var other = ['hi', 'goodbye'];
_.isEqualWith(array, other, customizer);
// => true
_.isError(value)
Проверяет, является ли value объектом Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError или URIError.
Начиная с версии
3.0.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является объектом ошибки, иначе false.
Пример
_.isError(new Error); // => true _.isError(Error); // => false
_.isFinite(value)
Проверяет, является ли value конечным числовым примитивом.
Примечание: Этот метод основан на Number.isFinite.
Начиная с версии
0.1.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является конечным числом, иначе false.
Пример
_.isFinite(3);
// => true
_.isFinite(Number.MIN_VALUE);
// => true
_.isFinite(Infinity);
// => false
_.isFinite('3');
// => false
_.isFunction(value)
Проверяет, классифицируется ли value как объект Function.
Начиная с версии
0.1.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является функцией, иначе false.
Пример
_.isFunction(_); // => true _.isFunction(/abc/); // => false
_.isInteger(value)
Проверяет, является ли value целым числом.
Примечание: Этот метод основан на Number.isInteger.
Начиная с версии
4.0.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является целым числом, иначе false.
Пример
_.isInteger(3);
// => true
_.isInteger(Number.MIN_VALUE);
// => false
_.isInteger(Infinity);
// => false
_.isInteger('3');
// => false
_.isLength(value)
Проверяет, является ли value допустимой длиной для массивоподобного объекта.
Примечание: Этот метод частично основан на ToLength.
Начиная с версии
4.0.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является допустимой длиной, иначе false.
Пример
_.isLength(3);
// => true
_.isLength(Number.MIN_VALUE);
// => false
_.isLength(Infinity);
// => false
_.isLength('3');
// => false
_.isMap(value)
Проверяет, классифицируется ли value как объект Map.
Начиная с версии
4.3.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является коллекцией Map, иначе false.
Пример
_.isMap(new Map); // => true _.isMap(new WeakMap); // => false
_.isMatch(object, source)
Выполняет частичное глубокое сравнение между object и source, чтобы определить, содержит ли object эквивалентные значения свойств.
Примечание: Этот метод эквивалентен _.matches, если к нему частично применён source.
Частичные сравнения сопоставляют значения пустого массива и пустого объекта в source с любым массивом или объектом соответственно. Список поддерживаемых сравнений значений см. в _.isEqual.
Начиная с версии
3.0.0
Аргументы
-
object(Object): Проверяемый объект. -
source(Object): Объект со значениями свойств для сопоставления.
Возвращает
(boolean): Возвращает true, если object совпадает, иначе false.
Пример
var object = { 'a': 1, 'b': 2 };
_.isMatch(object, { 'b': 2 });
// => true
_.isMatch(object, { 'b': 1 });
// => false
_.isMatchWith(object, source, [customizer])
Этот метод аналогичен _.isMatch, за исключением того, что он принимает customizer, который вызывается для сравнения значений. Если customizer возвращает undefined, сравнение вместо этого выполняется методом. customizer вызывается с пятью аргументами: (objValue, srcValue, index|key, object, source).
С версии
4.0.0
Аргументы
-
object(Object): Проверяемый объект. -
source(Object): Объект со значениями свойств для сопоставления. -
[customizer](Function): Функция для настройки сравнения.
Возвращает
(boolean): Возвращает true, если object совпадает, иначе false.
Пример
function isGreeting(value) {
return /^h(?:i|ello)$/.test(value);
}
function customizer(objValue, srcValue) {
if (isGreeting(objValue) && isGreeting(srcValue)) {
return true;
}
}
var object = { 'greeting': 'hello' };
var source = { 'greeting': 'hi' };
_.isMatchWith(object, source, customizer);
// => true
_.isNaN(value)
Проверяет, является ли value NaN.
Примечание: Этот метод основан на Number.isNaN и отличается от глобального isNaN, который возвращает true для undefined и других нечисловых значений.
С версии
0.1.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value равен NaN, иначе false.
Пример
_.isNaN(NaN); // => true _.isNaN(new Number(NaN)); // => true isNaN(undefined); // => true _.isNaN(undefined); // => false
_.isNative(value)
Проверяет, является ли value исходной нативной функцией.
Примечание: Этот метод не может надежно обнаруживать нативные функции при наличии пакета core-js, поскольку core-js обходит такое обнаружение. Несмотря на многочисленные запросы, мейнтейнер core-js ясно дал понять: любая попытка исправить обнаружение будет блокироваться. В результате у нас практически нет другого выбора, кроме как выбросить ошибку. К сожалению, это также затрагивает пакеты, такие как babel-polyfill, которые зависят от core-js.
С версии
3.0.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является нативной функцией, иначе false.
Пример
_.isNative(Array.prototype.push); // => true _.isNative(_); // => false
_.isNil(value)
Проверяет, является ли value null или undefined.
С версии
4.0.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является nullish-значением (null или undefined), иначе false.
Пример
_.isNil(null); // => true _.isNil(void 0); // => true _.isNil(NaN); // => false
_.isNull(value)
Проверяет, является ли value null.
С версии
0.1.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value равен null, иначе false.
Пример
_.isNull(null); // => true _.isNull(void 0); // => false
_.isNumber(value)
Проверяет, классифицируется ли value как примитив или объект Number.
Примечание: Чтобы исключить Infinity, -Infinity и NaN, которые классифицируются как числа, используйте метод _.isFinite.
С версии
0.1.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является числом, иначе false.
Пример
_.isNumber(3);
// => true
_.isNumber(Number.MIN_VALUE);
// => true
_.isNumber(Infinity);
// => true
_.isNumber('3');
// => false
_.isObject(value)
Проверяет, относится ли value к типу языка Object. (например, массивы, функции, объекты, регулярные выражения, new Number(0) и new String(''))
С версии
0.1.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является объектом, иначе false.
Пример
_.isObject({});
// => true
_.isObject([1, 2, 3]);
// => true
_.isObject(_.noop);
// => true
_.isObject(null);
// => false
_.isObjectLike(value)
Проверяет, является ли value объектоподобным. Значение является объектоподобным, если оно не равно null и результат typeof для него равен "object".
С версии
4.0.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является объектоподобным, иначе false.
Пример
_.isObjectLike({});
// => true
_.isObjectLike([1, 2, 3]);
// => true
_.isObjectLike(_.noop);
// => false
_.isObjectLike(null);
// => false
_.isPlainObject(value)
Проверяет, является ли value простым объектом, то есть объектом, созданным конструктором Object или имеющим [[Prototype]], равный null.
С версии
0.8.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является простым объектом, иначе false.
Пример
function Foo() {
this.a = 1;
}
_.isPlainObject(new Foo);
// => false
_.isPlainObject([1, 2, 3]);
// => false
_.isPlainObject({ 'x': 0, 'y': 0 });
// => true
_.isPlainObject(Object.create(null));
// => true
_.isRegExp(value)
Проверяет, классифицируется ли value как объект RegExp.
С версии
0.1.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является регулярным выражением, иначе false.
Пример
_.isRegExp(/abc/);
// => true
_.isRegExp('/abc/');
// => false
_.isSafeInteger(value)
Проверяет, является ли value безопасным целым числом. Целое число считается безопасным, если оно представляет собой число двойной точности IEEE-754, не являющееся результатом округления небезопасного целого числа.
Примечание: Этот метод основан на Number.isSafeInteger.
С версии
4.0.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является безопасным целым числом, иначе false.
Пример
_.isSafeInteger(3);
// => true
_.isSafeInteger(Number.MIN_VALUE);
// => false
_.isSafeInteger(Infinity);
// => false
_.isSafeInteger('3');
// => false
_.isSet(value)
Проверяет, классифицируется ли value как объект Set.
С версии
4.3.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является множеством (set), иначе false.
Пример
_.isSet(new Set); // => true _.isSet(new WeakSet); // => false
_.isString(value)
Проверяет, классифицируется ли value как примитив или объект String.
С версии
0.1.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является строкой, иначе false.
Пример
_.isString('abc');
// => true
_.isString(1);
// => false
_.isSymbol(value)
Проверяет, классифицируется ли value как примитив или объект Symbol.
С версии
4.0.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является символом, иначе false.
Пример
_.isSymbol(Symbol.iterator);
// => true
_.isSymbol('abc');
// => false
_.isTypedArray(value)
Проверяет, классифицируется ли value как типизированный массив.
С версии
3.0.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является типизированным массивом, иначе false.
Пример
_.isTypedArray(new Uint8Array); // => true _.isTypedArray([]); // => false
_.isUndefined(value)
Проверяет, является ли value undefined.
С версии
0.1.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value равен undefined, иначе false.
Пример
_.isUndefined(void 0); // => true _.isUndefined(null); // => false
_.isWeakMap(value)
Проверяет, классифицируется ли value как объект WeakMap.
С версии
4.3.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является слабой картой (weak map), иначе false.
Пример
_.isWeakMap(new WeakMap); // => true _.isWeakMap(new Map); // => false
_.isWeakSet(value)
Проверяет, классифицируется ли value как объект WeakSet.
С версии
4.3.0
Аргументы
-
value(*): Проверяемое значение.
Возвращает
(boolean): Возвращает true, если value является слабым множеством (weak set), иначе false.
Пример
_.isWeakSet(new WeakSet); // => true _.isWeakSet(new Set); // => false
_.lt(value, other)
Проверяет, меньше ли value, чем other.
С версии
3.9.0
Аргументы
-
value(*): Сравниваемое значение. -
other(*): Другое сравниваемое значение.
Возвращает
(boolean): Возвращает true, если value меньше, чем other, иначе false.
Пример
_.lt(1, 3); // => true _.lt(3, 3); // => false _.lt(3, 1); // => false
_.lte(value, other)
Проверяет, меньше ли или равно value, чем other.
С версии
3.9.0
Аргументы
-
value(*): Сравниваемое значение. -
other(*): Другое сравниваемое значение.
Возвращает
(boolean): Возвращает true, если value меньше или равно other, иначе false.
Пример
_.lte(1, 3); // => true _.lte(3, 3); // => true _.lte(3, 1); // => false
_.toArray(value)
Преобразует value в массив.
С версии
0.1.0
Аргументы
-
value(*): Преобразуемое значение.
Возвращает
(Array): Возвращает преобразованный массив.
Пример
_.toArray({ 'a': 1, 'b': 2 });
// => [1, 2]
_.toArray('abc');
// => ['a', 'b', 'c']
_.toArray(1);
// => []
_.toArray(null);
// => []
_.toFinite(value)
Преобразует value в конечное число.
С версии
4.12.0
Аргументы
-
value(*): Преобразуемое значение.
Возвращает
(number): Возвращает преобразованное число.
Пример
_.toFinite(3.2);
// => 3.2
_.toFinite(Number.MIN_VALUE);
// => 5e-324
_.toFinite(Infinity);
// => 1.7976931348623157e+308
_.toFinite('3.2');
// => 3.2
_.toInteger(value)
Преобразует value в целое число.
Примечание: Этот метод приблизительно основан на ToInteger.
С версии
4.0.0
Аргументы
-
value(*): Преобразуемое значение.
Возвращает
(number): Возвращает преобразованное целое число.
Пример
_.toInteger(3.2);
// => 3
_.toInteger(Number.MIN_VALUE);
// => 0
_.toInteger(Infinity);
// => 1.7976931348623157e+308
_.toInteger('3.2');
// => 3
_.toLength(value)
Преобразует value в целое число, подходящее для использования в качестве длины массивоподобного объекта.
Примечание: Этот метод основан на ToLength.
С версии
4.0.0
Аргументы
-
value(*): Преобразуемое значение.
Возвращает
(number): Возвращает преобразованное целое число.
Пример
_.toLength(3.2);
// => 3
_.toLength(Number.MIN_VALUE);
// => 0
_.toLength(Infinity);
// => 4294967295
_.toLength('3.2');
// => 3
_.toNumber(value)
Преобразует value в число.
С версии
4.0.0
Аргументы
-
value(*): Обрабатываемое значение.
Возвращает
(number): Возвращает число.
Пример
_.toNumber(3.2);
// => 3.2
_.toNumber(Number.MIN_VALUE);
// => 5e-324
_.toNumber(Infinity);
// => Infinity
_.toNumber('3.2');
// => 3.2
_.toPlainObject(value)
Преобразует value в простой объект, преобразуя унаследованные перечисляемые свойства со строковыми ключами из value в собственные свойства простого объекта.
С версии
3.0.0
Аргументы
-
value(*): Преобразуемое значение.
Возвращает
(Object): Возвращает преобразованный простой объект.
Пример
function Foo() {
this.b = 2;
}
Foo.prototype.c = 3;
_.assign({ 'a': 1 }, new Foo);
// => { 'a': 1, 'b': 2 }
_.assign({ 'a': 1 }, _.toPlainObject(new Foo));
// => { 'a': 1, 'b': 2, 'c': 3 }
_.toSafeInteger(value)
Преобразует value в безопасное целое число. Безопасное целое число можно сравнивать и представлять корректно.
С версии
4.0.0
Аргументы
-
value(*): Преобразуемое значение.
Возвращает
(number): Возвращает преобразованное целое число.
Пример
_.toSafeInteger(3.2);
// => 3
_.toSafeInteger(Number.MIN_VALUE);
// => 0
_.toSafeInteger(Infinity);
// => 9007199254740991
_.toSafeInteger('3.2');
// => 3
_.toString(value)
Преобразует value в строку. Для значений null и undefined возвращается пустая строка. Знак -0 сохраняется.
С версии
4.0.0
Аргументы
-
value(*): Преобразуемое значение.
Возвращает
(string): Возвращает преобразованную строку.
Пример
_.toString(null); // => '' _.toString(-0); // => '-0' _.toString([1, 2, 3]); // => '1,2,3'
Методы «Math»
_.add(augend, addend)
Складывает два числа.
С версии
3.4.0
Аргументы
-
augend(number): Первое слагаемое. -
addend(number): Второе слагаемое.
Возвращает
(number): Возвращает сумму.
Пример
_.add(6, 4); // => 10
_.ceil(number, [precision=0])
Вычисляет number, округленное в большую сторону до precision.
С версии
3.10.0
Аргументы
-
number(number): Число для округления в большую сторону. -
[precision=0](number): Точность округления в большую сторону.
Возвращает
(number): Возвращает округленное в большую сторону число.
Пример
_.ceil(4.006); // => 5 _.ceil(6.004, 2); // => 6.01 _.ceil(6040, -2); // => 6100
_.divide(dividend, divisor)
Делит два числа.
С версии
4.7.0
Аргументы
-
dividend(number): Делимое. -
divisor(number): Делитель.
Возвращает
(number): Возвращает частное.
Пример
_.divide(6, 4); // => 1.5
_.floor(number, [precision=0])
Вычисляет number, округленное в меньшую сторону до precision.
С версии
3.10.0
Аргументы
-
number(number): Число для округления в меньшую сторону. -
[precision=0](number): Точность округления в меньшую сторону.
Возвращает
(number): Возвращает округленное в меньшую сторону число.
Пример
_.floor(4.006); // => 4 _.floor(0.046, 2); // => 0.04 _.floor(4060, -2); // => 4000
_.max(array)
Вычисляет максимальное значение в array. Если array пуст или является ложным (falsey), возвращается undefined.
С версии
0.1.0
Аргументы
-
array(Array): Массив для перебора.
Возвращает
(*): Возвращает максимальное значение.
Пример
_.max([4, 2, 8, 6]); // => 8 _.max([]); // => undefined
_.maxBy(array, [iteratee=_.identity])
Этот метод аналогичен _.max, за исключением того, что он принимает iteratee, который вызывается для каждого элемента в array для генерации критерия ранжирования значения. Функция-итератор вызывается с одним аргументом: (value).
С версии
4.0.0
Аргументы
-
array(Array): Массив для перебора. -
[iteratee=_.identity](Function): Функция-итератор, вызываемая для каждого элемента.
Возвращает
(*): Возвращает максимальное значение.
Пример
var objects = [{ 'n': 1 }, { 'n': 2 }];
_.maxBy(objects, function(o) { return o.n; });
// => { 'n': 2 }
// The `_.property` iteratee shorthand.
_.maxBy(objects, 'n');
// => { 'n': 2 }
_.mean(array)
Вычисляет среднее арифметическое значений в array.
С версии
4.0.0
Аргументы
-
array(Array): Массив для перебора.
Возвращает
(number): Возвращает среднее арифметическое.
Пример
_.mean([4, 2, 8, 6]); // => 5
_.meanBy(array, [iteratee=_.identity])
Этот метод аналогичен _.mean, за исключением того, что он принимает iteratee, который вызывается для каждого элемента в array для генерации усредняемого значения. Функция-итератор вызывается с одним аргументом: (value).
С версии
4.7.0
Аргументы
-
array(Array): Массив для перебора. -
[iteratee=_.identity](Function): Функция-итератор, вызываемая для каждого элемента.
Возвращает
(number): Возвращает среднее арифметическое.
Пример
var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
_.meanBy(objects, function(o) { return o.n; });
// => 5
// The `_.property` iteratee shorthand.
_.meanBy(objects, 'n');
// => 5
_.min(array)
Вычисляет минимальное значение в array. Если array пуст или является ложным (falsey), возвращается undefined.
С версии
0.1.0
Аргументы
-
array(Array): Массив для перебора.
Возвращает
(*): Возвращает минимальное значение.
Пример
_.min([4, 2, 8, 6]); // => 2 _.min([]); // => undefined
_.minBy(array, [iteratee=_.identity])
Этот метод аналогичен _.min, за исключением того, что он принимает iteratee, который вызывается для каждого элемента в array для генерации критерия ранжирования значения. Функция-итератор вызывается с одним аргументом: (value).
С версии
4.0.0
Аргументы
-
array(Array): Массив для перебора. -
[iteratee=_.identity](Function): Функция-итератор, вызываемая для каждого элемента.
Возвращает
(*): Возвращает минимальное значение.
Пример
var objects = [{ 'n': 1 }, { 'n': 2 }];
_.minBy(objects, function(o) { return o.n; });
// => { 'n': 1 }
// The `_.property` iteratee shorthand.
_.minBy(objects, 'n');
// => { 'n': 1 }
_.multiply(multiplier, multiplicand)
Умножает два числа.
С версии
4.7.0
Аргументы
-
multiplier(number): Первое число при умножении. -
multiplicand(number): Второе число при умножении.
Возвращает
(number): Возвращает произведение.
Пример
_.multiply(6, 4); // => 24
_.round(number, [precision=0])
Вычисляет number, округленное до precision.
С версии
3.10.0
Аргументы
-
number(number): Число для округления. -
[precision=0](number): Точность округления.
Возвращает
(number): Возвращает округленное число.
Пример
_.round(4.006); // => 4 _.round(4.006, 2); // => 4.01 _.round(4060, -2); // => 4100
_.subtract(minuend, subtrahend)
Вычитает два числа.
С версии
4.0.0
Аргументы
-
minuend(number): Уменьшаемое. -
subtrahend(number): Вычитаемое.
Возвращает
(number): Возвращает разность.
Пример
_.subtract(6, 4); // => 2
_.sum(array)
Вычисляет сумму значений в array.
С версии
3.4.0
Аргументы
-
array(Array): Массив для перебора.
Возвращает
(number): Возвращает сумму.
Пример
_.sum([4, 2, 8, 6]); // => 20
_.sumBy(array, [iteratee=_.identity])
Этот метод аналогичен _.sum, за исключением того, что он принимает iteratee, который вызывается для каждого элемента в array для генерации суммируемого значения. Функция-итератор вызывается с одним аргументом: (value).
С версии
4.0.0
Аргументы
-
array(Array): Массив для перебора. -
[iteratee=_.identity](Function): Функция-итератор, вызываемая для каждого элемента.
Возвращает
(number): Возвращает сумму.
Пример
var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
_.sumBy(objects, function(o) { return o.n; });
// => 20
// The `_.property` iteratee shorthand.
_.sumBy(objects, 'n');
// => 20
Методы «Number»
_.clamp(number, [lower], upper)
Ограничивает number диапазоном между границами lower и upper включительно.
С версии
4.0.0
Аргументы
-
number(number): Число для ограничения. -
[lower](number): Нижняя граница. -
upper(number): Верхняя граница.
Возвращает
(number): Возвращает ограниченное число.
Пример
_.clamp(-10, -5, 5); // => -5 _.clamp(10, -5, 5); // => 5
_.inRange(number, [start=0], end)
Проверяет, находится ли n в диапазоне между start и до, но не включая, end. Если end не указан, он устанавливается в start, а start затем устанавливается в 0. Если start больше, чем end, параметры меняются местами для поддержки отрицательных диапазонов.
Начиная с версии
3.3.0
Аргументы
-
number(number): Проверяемое число. -
[start=0](number): Начало диапазона. -
end(number): Конец диапазона.
Возвращает
(boolean): Возвращает true, если number находится в диапазоне, иначе false.
Пример
_.inRange(3, 2, 4); // => true _.inRange(4, 8); // => true _.inRange(4, 2); // => false _.inRange(2, 2); // => false _.inRange(1.2, 2); // => true _.inRange(5.2, 4); // => false _.inRange(-3, -2, -6); // => true
_.random([lower=0], [upper=1], [floating])
Генерирует случайное число между границами lower и upper включительно. Если передан только один аргумент, возвращается число между 0 и заданным числом. Если floating равен true или если lower или upper являются числами с плавающей точкой, вместо целого числа возвращается число с плавающей точкой.
Примечание: JavaScript следует стандарту IEEE-754 для обработки значений с плавающей точкой, что может приводить к неожиданным результатам.
Примечание: Если lower больше, чем upper, значения меняются местами.
Начиная с версии
0.7.0
Аргументы
-
[lower=0](number): Нижняя граница. -
[upper=1](number): Верхняя граница. -
[floating](boolean): Указывает, нужно ли возвращать число с плавающей точкой.
Возвращает
(number): Возвращает случайное число.
Пример
_.random(0, 5); // => an integer between 0 and 5 // when lower is greater than upper the values are swapped _.random(5, 0); // => an integer between 0 and 5 _.random(5); // => also an integer between 0 and 5 _.random(-5); // => an integer between -5 and 0 _.random(5, true); // => a floating-point number between 0 and 5 _.random(1.2, 5.2); // => a floating-point number between 1.2 and 5.2
Методы «Object»
_.assign(object, [sources])
Присваивает собственные перечисляемые свойства с строковыми ключами из исходных объектов целевому объекту. Исходные объекты применяются слева направо. Последующие источники перезаписывают присвоения свойств предыдущих источников.
Примечание: Этот метод мутирует object и в общих чертах основан на Object.assign.
Начиная с версии
0.10.0
Аргументы
-
object(Object): Целевой объект. -
[sources](...Object): Исходные объекты.
Возвращает
(Object): Возвращает object.
Пример
function Foo() {
this.a = 1;
}
function Bar() {
this.c = 3;
}
Foo.prototype.b = 2;
Bar.prototype.d = 4;
_.assign({ 'a': 0 }, new Foo, new Bar);
// => { 'a': 1, 'c': 3 }
_.assignIn(object, [sources])
Этот метод похож на _.assign, за исключением того, что он перебирает собственные и унаследованные свойства источников.
Примечание: Этот метод мутирует object.
Начиная с версии
4.0.0
Псевдонимы
_.extend
Аргументы
-
object(Object): Целевой объект. -
[sources](...Object): Исходные объекты.
Возвращает
(Object): Возвращает object.
Пример
function Foo() {
this.a = 1;
}
function Bar() {
this.c = 3;
}
Foo.prototype.b = 2;
Bar.prototype.d = 4;
_.assignIn({ 'a': 0 }, new Foo, new Bar);
// => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
_.assignInWith(object, sources, [customizer])
Этот метод похож на _.assignIn, за исключением того, что он принимает customizer, который вызывается для формирования присваиваемых значений. Если customizer возвращает undefined, присваивание обрабатывается самим методом. customizer вызывается с пятью аргументами: (objValue, srcValue, key, object, source).
Примечание: Этот метод мутирует object.
Начиная с версии
4.0.0
Псевдонимы
_.extendWith
Аргументы
-
object(Object): Целевой объект. -
sources(...Object): Исходные объекты. -
[customizer](Function): Функция для кастомизации присваиваемых значений.
Возвращает
(Object): Возвращает object.
Пример
function customizer(objValue, srcValue) {
return _.isUndefined(objValue) ? srcValue : objValue;
}
var defaults = _.partialRight(_.assignInWith, customizer);
defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
// => { 'a': 1, 'b': 2 }
_.assignWith(object, sources, [customizer])
Этот метод похож на _.assign, за исключением того, что он принимает customizer, который вызывается для формирования присваиваемых значений. Если customizer возвращает undefined, присваивание обрабатывается самим методом. customizer вызывается с пятью аргументами: (objValue, srcValue, key, object, source).
Примечание: Этот метод мутирует object.
Начиная с версии
4.0.0
Аргументы
-
object(Object): Целевой объект. -
sources(...Object): Исходные объекты. -
[customizer](Function): Функция для кастомизации присваиваемых значений.
Возвращает
(Object): Возвращает object.
Пример
function customizer(objValue, srcValue) {
return _.isUndefined(objValue) ? srcValue : objValue;
}
var defaults = _.partialRight(_.assignWith, customizer);
defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
// => { 'a': 1, 'b': 2 }
_.at(object, [paths])
Создает массив значений, соответствующих путям paths объекта object.
Начиная с версии
1.0.0
Аргументы
-
object(Object): Объект для итерации. -
[paths](...(string|string[])): Пути к свойствам для выборки.
Возвращает
(Array): Возвращает выбранные значения.
Пример
var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
_.at(object, ['a[0].b.c', 'a[1]']);
// => [3, 4]
_.create(prototype, [properties])
Создает объект, наследующий от объекта prototype. Если передан объект properties, его собственные перечисляемые свойства со строковыми ключами присваиваются созданному объекту.
Начиная с версии
2.3.0
Аргументы
-
prototype(Object): Объект для наследования. -
[properties](Object): Свойства для присвоения объекту.
Возвращает
(Object): Возвращает новый объект.
Пример
function Shape() {
this.x = 0;
this.y = 0;
}
function Circle() {
Shape.call(this);
}
Circle.prototype = _.create(Shape.prototype, {
'constructor': Circle
});
var circle = new Circle;
circle instanceof Circle;
// => true
circle instanceof Shape;
// => true
_.defaults(object, [sources])
Присваивает собственные и унаследованные перечисляемые свойства со строковыми ключами исходных объектов целевому объекту для всех свойств целевого объекта, которые разрешаются в undefined. Исходные объекты применяются слева направо. Как только свойство установлено, дополнительные значения того же свойства игнорируются.
Примечание: Этот метод мутирует object.
Начиная с версии
0.1.0
Аргументы
-
object(Object): Целевой объект. -
[sources](...Object): Исходные объекты.
Возвращает
(Object): Возвращает object.
Пример
_.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
// => { 'a': 1, 'b': 2 }
_.defaultsDeep(object, [sources])
Этот метод похож на _.defaults, за исключением того, что он рекурсивно присваивает свойства по умолчанию.
Примечание: Этот метод мутирует object.
Начиная с версии
3.10.0
Аргументы
-
object(Object): Целевой объект. -
[sources](...Object): Исходные объекты.
Возвращает
(Object): Возвращает object.
Пример
_.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });
// => { 'a': { 'b': 2, 'c': 3 } }
_.findKey(object, [predicate=_.identity])
Этот метод похож на _.find, за исключением того, что он возвращает ключ первого элемента, для которого predicate возвращает истинное значение, вместо самого элемента.
Начиная с версии
1.1.0
Аргументы
-
object(Object): Объект для проверки. -
[predicate=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(*): Возвращает ключ совпавшего элемента, иначе undefined.
Пример
var users = {
'barney': { 'age': 36, 'active': true },
'fred': { 'age': 40, 'active': false },
'pebbles': { 'age': 1, 'active': true }
};
_.findKey(users, function(o) { return o.age < 40; });
// => 'barney' (iteration order is not guaranteed)
// The `_.matches` iteratee shorthand.
_.findKey(users, { 'age': 1, 'active': true });
// => 'pebbles'
// The `_.matchesProperty` iteratee shorthand.
_.findKey(users, ['active', false]);
// => 'fred'
// The `_.property` iteratee shorthand.
_.findKey(users, 'active');
// => 'barney'
_.findLastKey(object, [predicate=_.identity])
Этот метод похож на _.findKey, за исключением того, что он перебирает элементы коллекции в обратном порядке.
Начиная с версии
2.0.0
Аргументы
-
object(Object): Объект для проверки. -
[predicate=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(*): Возвращает ключ совпавшего элемента, иначе undefined.
Пример
var users = {
'barney': { 'age': 36, 'active': true },
'fred': { 'age': 40, 'active': false },
'pebbles': { 'age': 1, 'active': true }
};
_.findLastKey(users, function(o) { return o.age < 40; });
// => returns 'pebbles' assuming `_.findKey` returns 'barney'
// The `_.matches` iteratee shorthand.
_.findLastKey(users, { 'age': 36, 'active': true });
// => 'barney'
// The `_.matchesProperty` iteratee shorthand.
_.findLastKey(users, ['active', false]);
// => 'fred'
// The `_.property` iteratee shorthand.
_.findLastKey(users, 'active');
// => 'pebbles'
_.forIn(object, [iteratee=_.identity])
Итерирует по собственным и унаследованным перечисляемым свойствам объекта со строковыми ключами и вызывает iteratee для каждого свойства. Итератор вызывается с тремя аргументами: (value, key, object). Функции-итераторы могут преждевременно прервать итерацию, явно возвращая false.
Начиная с версии
0.3.0
Аргументы
-
object(Object): Объект для итерации. -
[iteratee=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(Object): Возвращает object.
Пример
function Foo() {
this.a = 1;
this.b = 2;
}
Foo.prototype.c = 3;
_.forIn(new Foo, function(value, key) {
console.log(key);
});
// => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).
_.forInRight(object, [iteratee=_.identity])
Этот метод похож на _.forIn, за исключением того, что он перебирает свойства object в обратном порядке.
Начиная с версии
2.0.0
Аргументы
-
object(Object): Объект для итерации. -
[iteratee=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(Object): Возвращает object.
Пример
function Foo() {
this.a = 1;
this.b = 2;
}
Foo.prototype.c = 3;
_.forInRight(new Foo, function(value, key) {
console.log(key);
});
// => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.
_.forOwn(object, [iteratee=_.identity])
Итерирует по собственным перечисляемым свойствам объекта со строковыми ключами и вызывает iteratee для каждого свойства. Итератор вызывается с тремя аргументами: (value, key, object). Функции-итераторы могут преждевременно прервать итерацию, явно возвращая false.
Начиная с версии
0.3.0
Аргументы
-
object(Object): Объект для итерации. -
[iteratee=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(Object): Возвращает object.
Пример
function Foo() {
this.a = 1;
this.b = 2;
}
Foo.prototype.c = 3;
_.forOwn(new Foo, function(value, key) {
console.log(key);
});
// => Logs 'a' then 'b' (iteration order is not guaranteed).
_.forOwnRight(object, [iteratee=_.identity])
Этот метод похож на _.forOwn, за исключением того, что он перебирает свойства object в обратном порядке.
Начиная с версии
2.0.0
Аргументы
-
object(Object): Объект для итерации. -
[iteratee=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(Object): Возвращает object.
Пример
function Foo() {
this.a = 1;
this.b = 2;
}
Foo.prototype.c = 3;
_.forOwnRight(new Foo, function(value, key) {
console.log(key);
});
// => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.
_.functions(object)
Создает массив имен свойств-функций из собственных перечисляемых свойств object.
Начиная с версии
0.1.0
Аргументы
-
object(Object): Объект для проверки.
Возвращает
(Array): Возвращает имена функций.
Пример
function Foo() {
this.a = _.constant('a');
this.b = _.constant('b');
}
Foo.prototype.c = _.constant('c');
_.functions(new Foo);
// => ['a', 'b']
_.functionsIn(object)
Создает массив имен свойств-функций из собственных и унаследованных перечисляемых свойств object.
Начиная с версии
4.0.0
Аргументы
-
object(Object): Объект для проверки.
Возвращает
(Array): Возвращает имена функций.
Пример
function Foo() {
this.a = _.constant('a');
this.b = _.constant('b');
}
Foo.prototype.c = _.constant('c');
_.functionsIn(new Foo);
// => ['a', 'b', 'c']
_.get(object, path, [defaultValue])
Получает значение по пути path объекта object. Если разрешенное значение равно undefined, вместо него возвращается defaultValue.
Начиная с версии
3.7.0
Аргументы
-
object(Object): Объект для запроса. -
path(Array|string): Путь к получаемому свойству. -
[defaultValue](*): Значение, возвращаемое для разрешенных значений, равныхundefined.
Возвращает
(*): Возвращает разрешенное значение.
Пример
var object = { 'a': [{ 'b': { 'c': 3 } }] };
_.get(object, 'a[0].b.c');
// => 3
_.get(object, ['a', '0', 'b', 'c']);
// => 3
_.get(object, 'a.b.c', 'default');
// => 'default'
_.has(object, path)
Проверяет, является ли path прямым свойством object.
Начиная с версии
0.1.0
Аргументы
-
object(Object): Объект для запроса. -
path(Array|string): Путь для проверки.
Возвращает
(boolean): Возвращает true, если path существует, иначе false.
Пример
var object = { 'a': { 'b': 2 } };
var other = _.create({ 'a': _.create({ 'b': 2 }) });
_.has(object, 'a');
// => true
_.has(object, 'a.b');
// => true
_.has(object, ['a', 'b']);
// => true
_.has(other, 'a');
// => false
_.hasIn(object, path)
Проверяет, является ли path прямым или унаследованным свойством object.
Начиная с версии
4.0.0
Аргументы
-
object(Object): Объект для запроса. -
path(Array|string): Путь для проверки.
Возвращает
(boolean): Возвращает true, если path существует, иначе false.
Пример
var object = _.create({ 'a': _.create({ 'b': 2 }) });
_.hasIn(object, 'a');
// => true
_.hasIn(object, 'a.b');
// => true
_.hasIn(object, ['a', 'b']);
// => true
_.hasIn(object, 'b');
// => false
_.invert(object)
Создает объект, состоящий из инвертированных ключей и значений object. Если object содержит повторяющиеся значения, последующие значения перезаписывают присвоения свойств предыдущих значений.
Начиная с версии
0.7.0
Аргументы
-
object(Object): Объект для инвертирования.
Возвращает
(Object): Возвращает новый инвертированный объект.
Пример
var object = { 'a': 1, 'b': 2, 'c': 1 };
_.invert(object);
// => { '1': 'c', '2': 'b' }
_.invertBy(object, [iteratee=_.identity])
Этот метод похож на _.invert, за исключением того, что инвертированный объект генерируется из результатов прогона каждого элемента object через iteratee. Соответствующее инвертированное значение каждого инвертированного ключа представляет собой массив ключей, ответственных за генерацию инвертированного значения. Итератор вызывается с одним аргументом: (value).
Начиная с версии
4.1.0
Аргументы
-
object(Object): Объект для инвертирования. -
[iteratee=_.identity](Function): Итератор, вызываемый для каждого элемента.
Возвращает
(Object): Возвращает новый инвертированный объект.
Пример
var object = { 'a': 1, 'b': 2, 'c': 1 };
_.invertBy(object);
// => { '1': ['a', 'c'], '2': ['b'] }
_.invertBy(object, function(value) {
return 'group' + value;
});
// => { 'group1': ['a', 'c'], 'group2': ['b'] }
_.invoke(object, path, [args])
Вызывает метод по пути path объекта object.
Начиная с версии
4.0.0
Аргументы
-
object(Object): Объект для запроса. -
path(Array|string): Путь к вызываемому методу. -
[args](...*): Аргументы, с которыми вызывается метод.
Возвращает
(*): Возвращает результат вызванного метода.
Пример
var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };
_.invoke(object, 'a[0].b.c.slice', 1, 3);
// => [2, 3]
_.keys(object)
Создает массив имен собственных перечисляемых свойств object.
Примечание: Значения, не являющиеся объектами, приводятся к объектам. Подробнее см. в спецификации ES.
Начиная с версии
0.1.0
Аргументы
-
object(Object): Объект для запроса.
Возвращает
(Array): Возвращает массив имен свойств.
Пример
function Foo() {
this.a = 1;
this.b = 2;
}
Foo.prototype.c = 3;
_.keys(new Foo);
// => ['a', 'b'] (iteration order is not guaranteed)
_.keys('hi');
// => ['0', '1']
_.keysIn(object)
Создает массив собственных и унаследованных перечисляемых имен свойств object.
Примечание: Значения, не являющиеся объектами, приводятся к объектам.
Начиная с версии
3.0.0
Аргументы
-
object(Object): Объект для запроса.
Возвращает
(Array): Возвращает массив имен свойств.
Пример
function Foo() {
this.a = 1;
this.b = 2;
}
Foo.prototype.c = 3;
_.keysIn(new Foo);
// => ['a', 'b', 'c'] (iteration order is not guaranteed)
_.mapKeys(object, [iteratee=_.identity])
Противоположность метода _.mapValues; этот метод создает объект с теми же значениями, что и у object, и ключами, сформированными путем прогона каждого собственного перечисляемого свойства со строковым ключом object через iteratee. Итератор вызывается с тремя аргументами: (value, key, object).
Начиная с версии
3.8.0
Аргументы
-
object(Object): Объект для итерации. -
[iteratee=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(Object): Возвращает новый отображенный объект.
Пример
_.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {
return key + value;
});
// => { 'a1': 1, 'b2': 2 }
_.mapValues(object, [iteratee=_.identity])
Создает объект с теми же ключами, что и у object, и значениями, полученными путем прогона каждого собственного перечисляемого свойства со строковым ключом object через iteratee. Итератор вызывается с тремя аргументами:
(value, key, object).
Начиная с версии
2.4.0
Аргументы
-
object(Object): Объект для итерации. -
[iteratee=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(Object): Возвращает новый отображенный объект.
Пример
var users = {
'fred': { 'user': 'fred', 'age': 40 },
'pebbles': { 'user': 'pebbles', 'age': 1 }
};
_.mapValues(users, function(o) { return o.age; });
// => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
// The `_.property` iteratee shorthand.
_.mapValues(users, 'age');
// => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
_.merge(object, [sources])
Этот метод похож на _.assign, за исключением того, что он рекурсивно объединяет собственные и унаследованные перечисляемые свойства со строковыми ключами исходных объектов в целевой объект. Свойства источника, которые разрешаются в undefined, пропускаются, если значение назначения существует. Свойства массивов и простых объектов объединяются рекурсивно. Другие объекты и типы значений перезаписываются присваиванием. Исходные объекты применяются слева направо. Последующие источники перезаписывают присвоения свойств предыдущих источников.
Примечание: Этот метод мутирует object.
Начиная с версии
0.5.0
Аргументы
-
object(Object): Целевой объект. -
[sources](...Object): Исходные объекты.
Возвращает
(Object): Возвращает object.
Пример
var object = {
'a': [{ 'b': 2 }, { 'd': 4 }]
};
var other = {
'a': [{ 'c': 3 }, { 'e': 5 }]
};
_.merge(object, other);
// => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
_.mergeWith(object, sources, customizer)
Этот метод похож на _.merge, за исключением того, что он принимает customizer, который вызывается для формирования объединенных значений свойств назначения и источника. Если customizer возвращает undefined, слияние обрабатывается самим методом. customizer вызывается с шестью аргументами:
(objValue, srcValue, key, object, source, stack).
Примечание: Этот метод мутирует object.
Начиная с версии
4.0.0
Аргументы
-
object(Object): Целевой объект. -
sources(...Object): Исходные объекты. -
customizer(Function): Функция для кастомизации присваиваемых значений.
Возвращает
(Object): Возвращает object.
Пример
function customizer(objValue, srcValue) {
if (_.isArray(objValue)) {
return objValue.concat(srcValue);
}
}
var object = { 'a': [1], 'b': [2] };
var other = { 'a': [3], 'b': [4] };
_.mergeWith(object, other, customizer);
// => { 'a': [1, 3], 'b': [2, 4] }
_.omit(object, [paths])
Противоположность метода _.pick; этот метод создает объект, состоящий из собственных и унаследованных перечисляемых путей к свойствам object, которые не были опущены.
Примечание: Этот метод значительно медленнее, чем _.pick.
Начиная с версии
0.1.0
Аргументы
-
object(Object): Исходный объект. -
[paths](...(string|string[])): Пути к свойствам для исключения.
Возвращает
(Object): Возвращает новый объект.
Пример
var object = { 'a': 1, 'b': '2', 'c': 3 };
_.omit(object, ['a', 'c']);
// => { 'b': '2' }
_.omitBy(object, [predicate=_.identity])
Противоположность метода _.pickBy; этот метод создает объект, состоящий из собственных и унаследованных перечисляемых свойств со строковыми ключами object, для которых predicate не возвращает истинное значение. Предикат вызывается с двумя аргументами: (value, key).
Начиная с версии
4.0.0
Аргументы
-
object(Object): Исходный объект. -
[predicate=_.identity](Function): Функция, вызываемая для каждого свойства.
Возвращает
(Object): Возвращает новый объект.
Пример
var object = { 'a': 1, 'b': '2', 'c': 3 };
_.omitBy(object, _.isNumber);
// => { 'b': '2' }
_.pick(object, [paths])
Создает объект, состоящий из выбранных свойств object.
Начиная с версии
0.1.0
Аргументы
-
object(Object): Исходный объект. -
[paths](...(string|string[])): Пути к свойствам для выбора.
Возвращает
(Object): Возвращает новый объект.
Пример
var object = { 'a': 1, 'b': '2', 'c': 3 };
_.pick(object, ['a', 'c']);
// => { 'a': 1, 'c': 3 }
_.pickBy(object, [predicate=_.identity])
Создает объект, состоящий из свойств object, для которых predicate возвращает истинное значение. Предикат вызывается с двумя аргументами: (value, key).
Начиная с версии
4.0.0
Аргументы
-
object(Object): Исходный объект. -
[predicate=_.identity](Function): Функция, вызываемая для каждого свойства.
Возвращает
(Object): Возвращает новый объект.
Пример
var object = { 'a': 1, 'b': '2', 'c': 3 };
_.pickBy(object, _.isNumber);
// => { 'a': 1, 'c': 3 }
_.result(object, path, [defaultValue])
Этот метод похож на _.get, за исключением того, что если разрешенное значение является функцией, она вызывается с привязкой this к ее родительскому объекту, и возвращается ее результат.
Начиная с версии
0.1.0
Аргументы
-
object(Object): Объект для запроса. -
path(Array|string): Путь к разрешаемому свойству. -
[defaultValue](*): Значение, возвращаемое для разрешенных значений, равныхundefined.
Возвращает
(*): Возвращает разрешенное значение.
Пример
var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };
_.result(object, 'a[0].b.c1');
// => 3
_.result(object, 'a[0].b.c2');
// => 4
_.result(object, 'a[0].b.c3', 'default');
// => 'default'
_.result(object, 'a[0].b.c3', _.constant('default'));
// => 'default'
_.set(object, path, value)
Устанавливает значение по пути path объекта object. Если часть пути path не существует, она создается. Массивы создаются для отсутствующих индексных свойств, в то время как объекты создаются для всех остальных отсутствующих свойств. Используйте _.setWith для настройки создания path.
Примечание: Этот метод мутирует object.
Начиная с версии
3.7.0
Аргументы
-
object(Object): Объект для изменения. -
path(Array|string): Путь к устанавливаемому свойству. -
value(*): Устанавливаемое значение.
Возвращает
(Object): Возвращает object.
Пример
var object = { 'a': [{ 'b': { 'c': 3 } }] };
_.set(object, 'a[0].b.c', 4);
console.log(object.a[0].b.c);
// => 4
_.set(object, ['x', '0', 'y', 'z'], 5);
console.log(object.x[0].y.z);
// => 5
_.setWith(object, path, value, [customizer])
Этот метод похож на _.set, за исключением того, что он принимает customizer, которая вызывается для создания объектов для path. Если customizer возвращает undefined, создание пути вместо этого обрабатывается методом. customizer вызывается с тремя аргументами: (nsValue, key, nsObject).
Примечание: этот метод мутирует object.
Начиная с версии
4.0.0
Аргументы
-
object(Object): изменяемый объект. -
path(Array|string): путь к устанавливаемому свойству. -
value(*): устанавливаемое значение. -
[customizer](Function): функция для настройки присваиваемых значений.
Возвращает
(Object): возвращает object.
Пример
var object = {};
_.setWith(object, '[0][1]', 'a', Object);
// => { '0': { '1': 'a' } }
_.toPairs(object)
Создаёт массив собственных перечисляемых пар ключ-значение со строковыми ключами для object, который может быть использован _.fromPairs. Если object является объектом Map или Set, возвращаются его элементы.
Начиная с версии
4.0.0
Псевдонимы
_.entries
Аргументы
-
object(Object): опрашиваемый объект.
Возвращает
(Array): возвращает пары ключ-значение.
Пример
function Foo() {
this.a = 1;
this.b = 2;
}
Foo.prototype.c = 3;
_.toPairs(new Foo);
// => [['a', 1], ['b', 2]] (iteration order is not guaranteed)
_.toPairsIn(object)
Создаёт массив собственных и унаследованных перечисляемых пар ключ-значение со строковыми ключами для object, который может быть использован _.fromPairs. Если object является объектом Map или Set, возвращаются его элементы.
Начиная с версии
4.0.0
Псевдонимы
_.entriesIn
Аргументы
-
object(Object): опрашиваемый объект.
Возвращает
(Array): возвращает пары ключ-значение.
Пример
function Foo() {
this.a = 1;
this.b = 2;
}
Foo.prototype.c = 3;
_.toPairsIn(new Foo);
// => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)
_.transform(object, [iteratee=_.identity], [accumulator])
Альтернатива _.reduce; этот метод преобразует object в новый объект accumulator, который является результатом прогона каждого из его собственных перечисляемых свойств со строковыми ключами через iteratee, при этом каждый вызов потенциально мутирует объект accumulator. Если accumulator не передан, будет использован новый объект с тем же [[Prototype]]. Итератор вызывается с четырьмя аргументами: (accumulator, value, key, object). Итеративные функции могут досрочно прерывать итерацию, явно возвращая false.
Начиная с версии
1.3.0
Аргументы
-
object(Object): объект для перебора. -
[iteratee=_.identity](Function): функция, вызываемая на каждой итерации. -
[accumulator](*): пользовательское значение аккумулятора.
Возвращает
(*): возвращает накопленное значение.
Пример
_.transform([2, 3, 4], function(result, n) {
result.push(n *= n);
return n % 2 == 0;
}, []);
// => [4, 9]
_.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
(result[value] || (result[value] = [])).push(key);
}, {});
// => { '1': ['a', 'c'], '2': ['b'] }
_.unset(object, path)
Удаляет свойство по пути path объекта object.
Примечание: этот метод мутирует object.
Начиная с версии
4.0.0
Аргументы
-
object(Object): изменяемый объект. -
path(Array|string): путь к удаляемому свойству.
Возвращает
(boolean): возвращает true, если свойство удалено, иначе false.
Пример
var object = { 'a': [{ 'b': { 'c': 7 } }] };
_.unset(object, 'a[0].b.c');
// => true
console.log(object);
// => { 'a': [{ 'b': {} }] };
_.unset(object, ['a', '0', 'b', 'c']);
// => true
console.log(object);
// => { 'a': [{ 'b': {} }] };
_.update(object, path, updater)
Этот метод похож на _.set, за исключением того, что он принимает updater для вычисления устанавливаемого значения. Используйте _.updateWith для настройки создания пути path. Функция updater вызывается с одним аргументом: (value).
Примечание: этот метод мутирует object.
Начиная с версии
4.6.0
Аргументы
-
object(Object): изменяемый объект. -
path(Array|string): путь к устанавливаемому свойству. -
updater(Function): функция для генерации обновлённого значения.
Возвращает
(Object): возвращает object.
Пример
var object = { 'a': [{ 'b': { 'c': 3 } }] };
_.update(object, 'a[0].b.c', function(n) { return n * n; });
console.log(object.a[0].b.c);
// => 9
_.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });
console.log(object.x[0].y.z);
// => 0
_.updateWith(object, path, updater, [customizer])
Этот метод похож на _.update, за исключением того, что он принимает customizer, которая вызывается для создания объектов для path. Если customizer возвращает undefined, создание пути вместо этого обрабатывается методом. Функция customizer вызывается с тремя аргументами: (nsValue, key, nsObject).
Примечание: этот метод мутирует object.
Начиная с версии
4.6.0
Аргументы
-
object(Object): изменяемый объект. -
path(Array|string): путь к устанавливаемому свойству. -
updater(Function): функция для генерации обновлённого значения. -
[customizer](Function): функция для настройки присваиваемых значений.
Возвращает
(Object): возвращает object.
Пример
var object = {};
_.updateWith(object, '[0][1]', _.constant('a'), Object);
// => { '0': { '1': 'a' } }
_.values(object)
Создаёт массив собственных перечисляемых значений свойств со строковыми ключами для object.
Примечание: значения, не являющиеся объектами, приводятся к объектам.
Начиная с версии
0.1.0
Аргументы
-
object(Object): опрашиваемый объект.
Возвращает
(Array): возвращает массив значений свойств.
Пример
function Foo() {
this.a = 1;
this.b = 2;
}
Foo.prototype.c = 3;
_.values(new Foo);
// => [1, 2] (iteration order is not guaranteed)
_.values('hi');
// => ['h', 'i']
_.valuesIn(object)
Создаёт массив собственных и унаследованных перечисляемых значений свойств со строковыми ключами для object.
Примечание: значения, не являющиеся объектами, приводятся к объектам.
Начиная с версии
3.0.0
Аргументы
-
object(Object): опрашиваемый объект.
Возвращает
(Array): возвращает массив значений свойств.
Пример
function Foo() {
this.a = 1;
this.b = 2;
}
Foo.prototype.c = 3;
_.valuesIn(new Foo);
// => [1, 2, 3] (iteration order is not guaranteed)
Методы “Seq”
_(value)
Создаёт объект lodash, который оборачивает value для включения неявных цепочечных последовательностей методов. Методы, которые оперируют массивами, коллекциями и функциями и возвращают их, могут быть объединены в цепочку. Методы, которые извлекают одно значение или могут вернуть примитивное значение, автоматически завершают цепочку и возвращают развёрнутое значение. В противном случае значение должно быть развёрнуто с помощью _#value.
Явные цепочечные последовательности, которые обязательно должны быть развёрнуты с помощью _#value, могут быть включены с помощью _.chain.
Выполнение методов в цепочке является ленивым, то есть оно откладывается до тех пор, пока _#value не будет вызван неявно или явно.
Ленивые вычисления позволяют ряду методов поддерживать сокращённое слияние (shortcut fusion). Shortcut fusion — это оптимизация для объединения вызовов итераторов; это предотвращает создание промежуточных массивов и может значительно сократить количество выполнений итератора. Участки цепочечной последовательности подходят для shortcut fusion, если этот участок применяется к массиву и итераторы принимают только один аргумент. Эвристика определения того, подходит ли участок для shortcut fusion, может быть изменена.
Использование цепочек поддерживается в пользовательских сборках, если метод _#value прямо или косвенно включён в сборку.
Помимо методов lodash, обёртки имеют методы Array и String.
Методами обёртки Array являются:concat, join, pop, push, shift, sort, splice и unshift
Методами обёртки String являются:replace и split
Методами обёртки, поддерживающими shortcut fusion, являются:at, compact, drop, dropRight, dropWhile, filter, find, findLast, head, initial, last, map, reject, reverse, slice, tail, take, takeRight, takeRightWhile, takeWhile и toArray
Методами обёртки, поддерживающими объединение в цепочки, являются:after, ary, assign, assignIn, assignInWith, assignWith, at, before, bind, bindAll, bindKey, castArray, chain, chunk, commit, compact, concat, conforms, constant, countBy, create, curry, debounce, defaults, defaultsDeep, defer, delay, difference, differenceBy, differenceWith, drop, dropRight, dropRightWhile, dropWhile, extend, extendWith, fill, filter, flatMap, flatMapDeep, flatMapDepth, flatten, flattenDeep, flattenDepth, flip, flow, flowRight, fromPairs, functions, functionsIn, groupBy, initial, intersection, intersectionBy, intersectionWith, invert, invertBy, invokeMap, iteratee, keyBy, keys, keysIn, map, mapKeys, mapValues, matches, matchesProperty, memoize, merge, mergeWith, method, methodOf, mixin, negate, nthArg, omit, omitBy, once, orderBy, over, overArgs, overEvery, overSome, partial, partialRight, partition, pick, pickBy, plant, property, propertyOf, pull, pullAll, pullAllBy, pullAllWith, pullAt, push, range, rangeRight, rearg, reject, remove, rest, reverse, sampleSize, set, setWith, shuffle, slice, sort, sortBy, splice, spread, tail, take, takeRight, takeRightWhile, takeWhile, tap, throttle, thru, toArray, toPairs, toPairsIn, toPath, toPlainObject, transform, unary, union, unionBy, unionWith, uniq, uniqBy, uniqWith, unset, unshift, unzip, unzipWith, update, updateWith, values, valuesIn, without, wrap, xor, xorBy, xorWith, zip, zipObject, zipObjectDeep и zipWith
Методами обёртки, которые по умолчанию не поддерживают объединение в цепочки, являются:add, attempt, camelCase, capitalize, ceil, clamp, clone, cloneDeep, cloneDeepWith, cloneWith, conformsTo, deburr, defaultTo, divide, each, eachRight, endsWith, eq, escape, escapeRegExp, every, find, findIndex, findKey, findLast, findLastIndex, findLastKey, first, floor, forEach, forEachRight, forIn, forInRight, forOwn, forOwnRight, get, gt, gte, has, hasIn, head, identity, includes, indexOf, inRange, invoke, isArguments, isArray, isArrayBuffer, isArrayLike, isArrayLikeObject, isBoolean, isBuffer, isDate, isElement, isEmpty, isEqual, isEqualWith, isError, isFinite, isFunction, isInteger, isLength, isMap, isMatch, isMatchWith, isNaN, isNative, isNil, isNull, isNumber, isObject, isObjectLike, isPlainObject, isRegExp, isSafeInteger, isSet, isString, isUndefined, isTypedArray, isWeakMap, isWeakSet, join, kebabCase, last, lastIndexOf, lowerCase, lowerFirst, lt, lte, max, maxBy, mean, meanBy, min, minBy, multiply, noConflict, noop, now, nth, pad, padEnd, padStart, parseInt, pop, random, reduce, reduceRight, repeat, result, round, runInContext, sample, shift, size, snakeCase, some, sortedIndex, sortedIndexBy, sortedLastIndex, sortedLastIndexBy, startCase, startsWith, stubArray, stubFalse, stubObject, stubString, stubTrue, subtract, sum, sumBy, template, times, toFinite, toInteger, toJSON, toLength, toLower, toNumber, toSafeInteger, toString, toUpper, trim, trimEnd, trimStart, truncate, unescape, uniqueId, upperCase, upperFirst, value и words
Аргументы
-
value(*): значение, оборачиваемое в экземплярlodash.
Возвращает
(Object): возвращает новый экземпляр обёртки lodash.
Пример
function square(n) {
return n * n;
}
var wrapped = _([1, 2, 3]);
// Returns an unwrapped value.
wrapped.reduce(_.add);
// => 6
// Returns a wrapped value.
var squares = wrapped.map(square);
_.isArray(squares);
// => false
_.isArray(squares.value());
// => true
_.chain(value)
Создаёт экземпляр обёртки lodash, который оборачивает value с включёнными явными цепочечными последовательностями методов. Результат таких последовательностей должен быть развёрнут с помощью _#value.
Начиная с версии
1.3.0
Аргументы
-
value(*): значение для обёртывания.
Возвращает
(Object): возвращает новый экземпляр обёртки lodash.
Пример
var users = [
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 },
{ 'user': 'pebbles', 'age': 1 }
];
var youngest = _
.chain(users)
.sortBy('age')
.map(function(o) {
return o.user + ' is ' + o.age;
})
.head()
.value();
// => 'pebbles is 1'
_.tap(value, interceptor)
Этот метод вызывает interceptor и возвращает value. Перехватчик вызывается с одним аргументом; (value). Назначение этого метода — «подключиться» к цепочечной последовательности методов для изменения промежуточных результатов.
Начиная с версии
0.1.0
Аргументы
-
value(*): значение, передаваемое вinterceptor. -
interceptor(Function): вызываемая функция.
Возвращает
(*): возвращает value.
Пример
_([1, 2, 3])
.tap(function(array) {
// Mutate input array.
array.pop();
})
.reverse()
.value();
// => [2, 1]
_.thru(value, interceptor)
Этот метод похож на _.tap, за исключением того, что он возвращает результат interceptor. Назначение этого метода — «пропускать через себя» значения, заменяя промежуточные результаты в цепочечной последовательности методов.
Начиная с версии
3.0.0
Аргументы
-
value(*): значение, передаваемое вinterceptor. -
interceptor(Function): вызываемая функция.
Возвращает
(*): возвращает результат interceptor.
Пример
_(' abc ')
.chain()
.trim()
.thru(function(value) {
return [value];
})
.value();
// => ['abc']
_.prototype[Symbol.iterator]()
Делает обёртку итерируемой.
Начиная с версии
4.0.0
Возвращает
(Object): возвращает объект обёртки.
Пример
var wrapped = _([1, 2]); wrapped[Symbol.iterator]() === wrapped; // => true Array.from(wrapped); // => [1, 2]
_.prototype.at([paths])
Этот метод является версией _.at для обёртки.
Начиная с версии
1.0.0
Аргументы
-
[paths](...(string|string[])): пути к выбираемым свойствам.
Возвращает
(Object): возвращает новый экземпляр обёртки lodash.
Пример
var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
_(object).at(['a[0].b.c', 'a[1]']).value();
// => [3, 4]
_.prototype.chain()
Создаёт экземпляр обёртки lodash с включёнными явными цепочечными последовательностями методов.
Начиная с версии
0.1.0
Возвращает
(Object): возвращает новый экземпляр обёртки lodash.
Пример
var users = [
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 }
];
// A sequence without explicit chaining.
_(users).head();
// => { 'user': 'barney', 'age': 36 }
// A sequence with explicit chaining.
_(users)
.chain()
.head()
.pick('user')
.value();
// => { 'user': 'barney' }
_.prototype.commit()
Выполняет цепочечную последовательность и возвращает обёрнутый результат.
Начиная с версии
3.2.0
Возвращает
(Object): возвращает новый экземпляр обёртки lodash.
Пример
var array = [1, 2]; var wrapped = _(array).push(3); console.log(array); // => [1, 2] wrapped = wrapped.commit(); console.log(array); // => [1, 2, 3] wrapped.last(); // => 3 console.log(array); // => [1, 2, 3]
_.prototype.next()
Получает следующее значение обёрнутого объекта в соответствии с протоколом итератора.
Начиная с версии
4.0.0
Возвращает
(Object): возвращает следующее значение итератора.
Пример
var wrapped = _([1, 2]);
wrapped.next();
// => { 'done': false, 'value': 1 }
wrapped.next();
// => { 'done': false, 'value': 2 }
wrapped.next();
// => { 'done': true, 'value': undefined }
_.prototype.plant(value)
Создаёт клон цепочечной последовательности, подставляя value в качестве обёрнутого значения.
Начиная с версии
3.2.0
Аргументы
-
value(*): подставляемое значение.
Возвращает
(Object): возвращает новый экземпляр обёртки lodash.
Пример
function square(n) {
return n * n;
}
var wrapped = _([1, 2]).map(square);
var other = wrapped.plant([3, 4]);
other.value();
// => [9, 16]
wrapped.value();
// => [1, 4]
_.prototype.reverse()
Этот метод является версией _.reverse для обёртки.
Примечание: этот метод мутирует обёрнутый массив.
Начиная с версии
0.1.0
Возвращает
(Object): возвращает новый экземпляр обёртки lodash.
Пример
var array = [1, 2, 3]; _(array).reverse().value() // => [3, 2, 1] console.log(array); // => [3, 2, 1]
_.prototype.value()
Выполняет цепочечную последовательность для получения развёрнутого значения.
Начиная с версии
0.1.0
Псевдонимы
_.prototype.toJSON, _.prototype.valueOf
Возвращает
(*): возвращает вычисленное развёрнутое значение.
Пример
_([1, 2, 3]).value(); // => [1, 2, 3]
Методы “String”
_.camelCase([string=''])
Преобразует строку string в стиль camelCase.
Начиная с версии
3.0.0
Аргументы
-
[string=''](string): строка для преобразования.
Возвращает
(string): возвращает строку в стиле camelCase.
Пример
_.camelCase('Foo Bar');
// => 'fooBar'
_.camelCase('--foo-bar--');
// => 'fooBar'
_.camelCase('__FOO_BAR__');
// => 'fooBar'
_.capitalize([string=''])
Преобразует первый символ строки string в верхний регистр, а остальные — в нижний регистр.
Начиная с версии
3.0.0
Аргументы
-
[string=''](string): строка для капитализации.
Возвращает
(string): возвращает капитализированную строку.
Пример
_.capitalize('FRED');
// => 'Fred'
_.deburr([string=''])
Очищает от диакритических знаков string путём преобразования букв из блоков Latin-1 Supplement и Latin Extended-A в базовые латинские буквы и удаления комбинируемых диакритических знаков.
Начиная с версии
3.0.0
Аргументы
-
[string=''](string): строка для очистки от диакритики.
Возвращает
(string): возвращает очищенную от диакритики строку.
Пример
_.deburr('déjà vu');
// => 'deja vu'
_.endsWith([string=''], [target], [position=string.length])
Проверяет, заканчивается ли string указанной целевой строкой.
Начиная с версии
3.0.0
Аргументы
-
[string=''](string): проверяемая строка. -
[target](string): искомая строка. -
[position=string.length](number): позиция, до которой производится поиск.
Возвращает
(boolean): возвращает true, если string заканчивается на target, иначе false.
Пример
_.endsWith('abc', 'c');
// => true
_.endsWith('abc', 'b');
// => false
_.endsWith('abc', 'b', 2);
// => true
_.escape([string=''])
Преобразует символы "&", "<", ">", '"' и "'" в string в соответствующие HTML-сущности.
Примечание: никакие другие символы не экранируются. Для экранирования дополнительных символов используйте стороннюю библиотеку, например he.
Хотя символ ">" экранируется для симметрии, такие символы, как ">" и "/", не требуют экранирования в HTML и не имеют особого значения, если только они не являются частью тега или значения атрибута без кавычек. Подробнее см. в статье Матиаса Байненса (Mathias Bynens) (в разделе "semi-related fun fact").
При работе с HTML всегда следует заключать значения атрибутов в кавычки для уменьшения векторов XSS-атак.
Начиная с версии
0.1.0
Аргументы
-
[string=''](string): экранируемая строка.
Возвращает
(string): возвращает экранированную строку.
Пример
_.escape('fred, barney, & pebbles');
// => 'fred, barney, & pebbles'
_.escapeRegExp([string=''])
Экранирует специальные символы RegExp "^", "$", "", ".", "*", "+", "?", "(", ")", "[", "]", "{", "}" и "|" в string.
Начиная с версии
3.0.0
Аргументы
-
[string=''](string): экранируемая строка.
Возвращает
(string): возвращает экранированную строку.
Пример
_.escapeRegExp('[lodash](https://lodash.com/)');
// => '\[lodash\]\(https://lodash\.com/\)'
_.kebabCase([string=''])
Преобразует string в kebab case.
Начиная с версии
3.0.0
Аргументы
-
[string=''](string): Строка для преобразования.
Возвращает
(string): Возвращает строку в формате kebab-case.
Пример
_.kebabCase('Foo Bar');
// => 'foo-bar'
_.kebabCase('fooBar');
// => 'foo-bar'
_.kebabCase('__FOO_BAR__');
// => 'foo-bar'
_.lowerCase([string=''])
Преобразует string (слова, разделенные пробелами) в нижний регистр.
Начиная с версии
4.0.0
Аргументы
-
[string=''](string): Строка для преобразования.
Возвращает
(string): Возвращает строку в нижнем регистре.
Пример
_.lowerCase('--Foo-Bar--');
// => 'foo bar'
_.lowerCase('fooBar');
// => 'foo bar'
_.lowerCase('__FOO_BAR__');
// => 'foo bar'
_.lowerFirst([string=''])
Преобразует первый символ string в нижний регистр.
Начиная с версии
4.0.0
Аргументы
-
[string=''](string): Строка для преобразования.
Возвращает
(string): Возвращает преобразованную строку.
Пример
_.lowerFirst('Fred');
// => 'fred'
_.lowerFirst('FRED');
// => 'fRED'
_.pad([string=''], [length=0], [chars=' '])
Дополняет string слева и справа, если она короче length. Символы заполнения усекаются, если их нельзя равномерно разделить на length.
Начиная с версии
3.0.0
Аргументы
-
[string=''](string): Строка для дополнения. -
[length=0](number): Длина дополнения. -
[chars=' '](string): Строка, используемая в качестве заполнителя.
Возвращает
(string): Возвращает дополненную строку.
Пример
_.pad('abc', 8);
// => ' abc '
_.pad('abc', 8, '_-');
// => '_-abc_-_'
_.pad('abc', 3);
// => 'abc'
_.padEnd([string=''], [length=0], [chars=' '])
Дополняет string справа, если она короче length. Символы заполнения усекаются, если они превышают length.
Начиная с версии
4.0.0
Аргументы
-
[string=''](string): Строка для дополнения. -
[length=0](number): Длина дополнения. -
[chars=' '](string): Строка, используемая в качестве заполнителя.
Возвращает
(string): Возвращает дополненную строку.
Пример
_.padEnd('abc', 6);
// => 'abc '
_.padEnd('abc', 6, '_-');
// => 'abc_-_'
_.padEnd('abc', 3);
// => 'abc'
_.padStart([string=''], [length=0], [chars=' '])
Дополняет string слева, если она короче length. Символы заполнения усекаются, если они превышают length.
Начиная с версии
4.0.0
Аргументы
-
[string=''](string): Строка для дополнения. -
[length=0](number): Длина дополнения. -
[chars=' '](string): Строка, используемая в качестве заполнителя.
Возвращает
(string): Возвращает дополненную строку.
Пример
_.padStart('abc', 6);
// => ' abc'
_.padStart('abc', 6, '_-');
// => '_-_abc'
_.padStart('abc', 3);
// => 'abc'
_.parseInt(string, [radix=10])
Преобразует string в целое число с указанным основанием системы счисления. Если radix равен undefined или 0, используется radix, равный 10, за исключением случаев, когда value является шестнадцатеричным числом — в этом случае используется radix, равный 16.
Примечание: этот метод соответствует реализации ES5 для parseInt.
Начиная с версии
1.1.0
Аргументы
-
string(string): Строка для преобразования. -
[radix=10](number): Основание системы счисления для интерпретацииvalue.
Возвращает
(number): Возвращает преобразованное целое число.
Пример
_.parseInt('08');
// => 8
_.map(['6', '08', '10'], _.parseInt);
// => [6, 8, 10]
_.repeat([string=''], [n=1])
Повторяет указанную строку n раз.
Начиная с версии
3.0.0
Аргументы
-
[string=''](string): Строка для повторения. -
[n=1](number): Количество повторений строки.
Возвращает
(string): Возвращает повторенную строку.
Пример
_.repeat('*', 3);
// => '***'
_.repeat('abc', 2);
// => 'abcabc'
_.repeat('abc', 0);
// => ''
_.replace([string=''], pattern, replacement)
Заменяет совпадения с pattern в string на replacement.
Примечание: этот метод основан на String#replace.
Начиная с версии
4.0.0
Аргументы
-
[string=''](string): Строка для изменения. -
pattern(RegExp|string): Шаблон для замены. -
replacement(Function|string): Замена совпадения.
Возвращает
(string): Возвращает измененную строку.
Пример
_.replace('Hi Fred', 'Fred', 'Barney');
// => 'Hi Barney'
_.snakeCase([string=''])
Преобразует string в snake case.
Начиная с версии
3.0.0
Аргументы
-
[string=''](string): Строка для преобразования.
Возвращает
(string): Возвращает строку в формате snake-case.
Пример
_.snakeCase('Foo Bar');
// => 'foo_bar'
_.snakeCase('fooBar');
// => 'foo_bar'
_.snakeCase('--FOO-BAR--');
// => 'foo_bar'
_.split([string=''], separator, [limit])
Разбивает string по separator.
Примечание: этот метод основан на String#split.
Начиная с версии
4.0.0
Аргументы
-
[string=''](string): Строка для разделения. -
separator(RegExp|string): Шаблон разделителя для разбиения. -
[limit](number): Длина для ограничения результатов.
Возвращает
(Array): Возвращает сегменты строки.
Пример
_.split('a-b-c', '-', 2);
// => ['a', 'b']
_.startCase([string=''])
Преобразует string в start case.
Начиная с версии
3.1.0
Аргументы
-
[string=''](string): Строка для преобразования.
Возвращает
(string): Возвращает строку в формате start case.
Пример
_.startCase('--foo-bar--');
// => 'Foo Bar'
_.startCase('fooBar');
// => 'Foo Bar'
_.startCase('__FOO_BAR__');
// => 'FOO BAR'
_.startsWith([string=''], [target], [position=0])
Проверяет, начинается ли string с указанной целевой строки.
Начиная с версии
3.0.0
Аргументы
-
[string=''](string): Проверяемая строка. -
[target](string): Строка для поиска. -
[position=0](number): Позиция, с которой начинается поиск.
Возвращает
(boolean): Возвращает true, если string начинается с target, иначе false.
Пример
_.startsWith('abc', 'a');
// => true
_.startsWith('abc', 'b');
// => false
_.startsWith('abc', 'b', 1);
// => true
_.template([string=''], [options={}])
Создает скомпилированную функцию шаблона, которая может интерполировать свойства данных в разделителях "interpolate", экранировать HTML в интерполированных свойствах данных в разделителях "escape" и выполнять JavaScript в разделителях "evaluate". Свойства данных могут быть доступны как свободные переменные в шаблоне. Если передан объект настроек, он имеет приоритет над значениями _.templateSettings.
Безопасность: функция _.template небезопасна и не должна использоваться. Она будет удалена в Lodash v5. Избегайте ненадежных входных данных. См. модель угроз.
Примечание: в сборке для разработки _.template использует sourceURL для более легкой отладки.
Для получения дополнительной информации о предварительной компиляции шаблонов см. документацию по пользовательским сборкам lodash.
Для получения дополнительной информации о песочницах расширений Chrome см. документацию по расширениям Chrome.
Начиная с версии
0.1.0
Аргументы
-
[string=''](string): Строка шаблона. -
[options={}](Object): Объект параметров. -
[options.escape=_.templateSettings.escape](RegExp): Разделитель HTML "escape". -
[options.evaluate=_.templateSettings.evaluate](RegExp): Разделитель "evaluate". -
[options.imports=_.templateSettings.imports](Object): Объект для импорта в шаблон в качестве свободных переменных. -
[options.interpolate=_.templateSettings.interpolate](RegExp): Разделитель "interpolate". -
[options.sourceURL='lodash.templateSources[n]'](string): sourceURL скомпилированного шаблона. -
[options.variable='obj'](string): Имя переменной объекта данных.
Возвращает
(Function): Возвращает скомпилированную функцию шаблона.
Пример
// Use the "interpolate" delimiter to create a compiled template.
var compiled = _.template('hello <%= user %>!');
compiled({ 'user': 'fred' });
// => 'hello fred!'
// Use the HTML "escape" delimiter to escape data property values.
var compiled = _.template('<b><%- value %></b>');
compiled({ 'value': '<script>' });
// => '<b>&lt;script&gt;</b>'
// Use the "evaluate" delimiter to execute JavaScript and generate HTML.
var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');
compiled({ 'users': ['fred', 'barney'] });
// => '<li>fred</li><li>barney</li>'
// Use the internal `print` function in "evaluate" delimiters.
var compiled = _.template('<% print("hello " + user); %>!');
compiled({ 'user': 'barney' });
// => 'hello barney!'
// Use the ES template literal delimiter as an "interpolate" delimiter.
// Disable support by replacing the "interpolate" delimiter.
var compiled = _.template('hello ${ user }!');
compiled({ 'user': 'pebbles' });
// => 'hello pebbles!'
// Use backslashes to treat delimiters as plain text.
var compiled = _.template('<%= "\\<%- value %\\>" %>');
compiled({ 'value': 'ignored' });
// => '<%- value %>'
// Use the `imports` option to import `jQuery` as `jq`.
var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';
var compiled = _.template(text, { 'imports': { 'jq': jQuery } });
compiled({ 'users': ['fred', 'barney'] });
// => '<li>fred</li><li>barney</li>'
// Use the `sourceURL` option to specify a custom sourceURL for the template.
var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });
compiled(data);
// => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector.
// Use the `variable` option to ensure a with-statement isn't used in the compiled template.
var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });
compiled.source;
// => function(data) {
// var __t, __p = '';
// __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';
// return __p;
// }
// Use custom template delimiters.
_.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
var compiled = _.template('hello {{ user }}!');
compiled({ 'user': 'mustache' });
// => 'hello mustache!'
// Use the `source` property to inline compiled templates for meaningful
// line numbers in error messages and stack traces.
fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\
var JST = {\
"main": ' + _.template(mainText).source + '\
};\
');
_.toLower([string=''])
Преобразует string целиком в нижний регистр, аналогично String#toLowerCase.
Начиная с версии
4.0.0
Аргументы
-
[string=''](string): Строка для преобразования.
Возвращает
(string): Возвращает строку в нижнем регистре.
Пример
_.toLower('--Foo-Bar--');
// => '--foo-bar--'
_.toLower('fooBar');
// => 'foobar'
_.toLower('__FOO_BAR__');
// => '__foo_bar__'
_.toUpper([string=''])
Преобразует string целиком в верхний регистр, аналогично String#toUpperCase.
Начиная с версии
4.0.0
Аргументы
-
[string=''](string): Строка для преобразования.
Возвращает
(string): Возвращает строку в верхнем регистре.
Пример
_.toUpper('--foo-bar--');
// => '--FOO-BAR--'
_.toUpper('fooBar');
// => 'FOOBAR'
_.toUpper('__foo_bar__');
// => '__FOO_BAR__'
_.trim([string=''], [chars=whitespace])
Удаляет начальные и конечные пробельные символы или указанные символы из string.
Начиная с версии
3.0.0
Аргументы
-
[string=''](string): Строка для обрезки. -
[chars=whitespace](string): Символы для удаления.
Возвращает
(string): Возвращает обрезанную строку.
Пример
_.trim(' abc ');
// => 'abc'
_.trim('-_-abc-_-', '_-');
// => 'abc'
_.map([' foo ', ' bar '], _.trim);
// => ['foo', 'bar']
_.trimEnd([string=''], [chars=whitespace])
Удаляет конечные пробельные символы или указанные символы из string.
Начиная с версии
4.0.0
Аргументы
-
[string=''](string): Строка для обрезки. -
[chars=whitespace](string): Символы для удаления.
Возвращает
(string): Возвращает обрезанную строку.
Пример
_.trimEnd(' abc ');
// => ' abc'
_.trimEnd('-_-abc-_-', '_-');
// => '-_-abc'
_.trimStart([string=''], [chars=whitespace])
Удаляет начальные пробельные символы или указанные символы из string.
Начиная с версии
4.0.0
Аргументы
-
[string=''](string): Строка для обрезки. -
[chars=whitespace](string): Символы для удаления.
Возвращает
(string): Возвращает обрезанную строку.
Пример
_.trimStart(' abc ');
// => 'abc '
_.trimStart('-_-abc-_-', '_-');
// => 'abc-_-'
_.truncate([string=''], [options={}])
Усекает string, если она длиннее заданной максимальной длины строки. Последние символы усеченной строки заменяются строкой пропуска, которая по умолчанию равна "...".
Начиная с версии
4.0.0
Аргументы
-
[string=''](string): Строка для усечения. -
[options={}](Object): Объект параметров. -
[options.length=30](number): Максимальная длина строки. -
[options.omission='...'](string): Строка, указывающая на пропуск текста. -
[options.separator](RegExp|string): Шаблон разделителя, до которого выполняется усечение.
Возвращает
(string): Возвращает усеченную строку.
Пример
_.truncate('hi-diddly-ho there, neighborino');
// => 'hi-diddly-ho there, neighbo...'
_.truncate('hi-diddly-ho there, neighborino', {
'length': 24,
'separator': ' '
});
// => 'hi-diddly-ho there,...'
_.truncate('hi-diddly-ho there, neighborino', {
'length': 24,
'separator': /,? +/
});
// => 'hi-diddly-ho there...'
_.truncate('hi-diddly-ho there, neighborino', {
'omission': ' [...]'
});
// => 'hi-diddly-ho there, neig [...]'
_.unescape([string=''])
Обратный метод по отношению к _.escape; этот метод преобразует HTML-сущности &amp;, &lt;, &gt;, &quot; и &#39; в string в соответствующие им символы.
Примечание: никакие другие HTML-сущности не декодируются. Чтобы декодировать дополнительные HTML-сущности, используйте стороннюю библиотеку, например he.
Начиная с версии
0.6.0
Аргументы
-
[string=''](string): Строка для декодирования.
Возвращает
(string): Возвращает декодированную строку.
Пример
_.unescape('fred, barney, & pebbles');
// => 'fred, barney, & pebbles'
_.upperCase([string=''])
Преобразует string (слова, разделенные пробелами) в верхний регистр.
Начиная с версии
4.0.0
Аргументы
-
[string=''](string): Строка для преобразования.
Возвращает
(string): Возвращает строку в верхнем регистре.
Пример
_.upperCase('--foo-bar');
// => 'FOO BAR'
_.upperCase('fooBar');
// => 'FOO BAR'
_.upperCase('__foo_bar__');
// => 'FOO BAR'
_.upperFirst([string=''])
Преобразует первый символ string в верхний регистр.
Начиная с версии
4.0.0
Аргументы
-
[string=''](string): Строка для преобразования.
Возвращает
(string): Возвращает преобразованную строку.
Пример
_.upperFirst('fred');
// => 'Fred'
_.upperFirst('FRED');
// => 'FRED'
_.words([string=''], [pattern])
Разбивает string на массив составляющих ее слов.
Начиная с версии
3.0.0
Аргументы
-
[string=''](string): Проверяемая строка. -
[pattern](RegExp|string): Шаблон для поиска слов.
Возвращает
(Array): Возвращает слова из string.
Пример
_.words('fred, barney, & pebbles');
// => ['fred', 'barney', 'pebbles']
_.words('fred, barney, & pebbles', /[^, ]+/g);
// => ['fred', 'barney', '&', 'pebbles']
Методы «Util»
_.attempt(func, [args])
Пытается вызвать func, возвращая либо результат, либо перехваченный объект ошибки. Любые дополнительные аргументы передаются в func при вызове.
Начиная с версии
3.0.0
Аргументы
-
func(Function): Функция для попытки вызова. -
[args](...*): Аргументы для вызоваfunc.
Возвращает
(*): Возвращает результат вызова func или объект ошибки.
Пример
// Avoid throwing errors for invalid selectors.
var elements = _.attempt(function(selector) {
return document.querySelectorAll(selector);
}, '>_>');
if (_.isError(elements)) {
elements = [];
}
_.bindAll(object, methodNames)
Привязывает методы объекта к самому объекту, перезаписывая существующие методы.
Примечание: этот метод не устанавливает свойство "length" привязанных функций.
Начиная с версии
0.1.0
Аргументы
-
object(Object): Объект для привязки и назначения привязанных методов. -
methodNames(...(string|string[])): Имена методов объекта для привязки.
Возвращает
(Object): Возвращает object.
Пример
var view = {
'label': 'docs',
'click': function() {
console.log('clicked ' + this.label);
}
};
_.bindAll(view, ['click']);
jQuery(element).on('click', view.click);
// => Logs 'clicked docs' when clicked.
_.cond(pairs)
Создает функцию, которая перебирает pairs и вызывает соответствующую функцию первого предиката, вернувшего истинное значение (truthy). Пары «предикат-функция» вызываются с привязкой this и аргументами созданной функции.
Начиная с версии
4.0.0
Аргументы
-
pairs(Array): Пары предикат-функция.
Возвращает
(Function): Возвращает новую составную функцию.
Пример
var func = _.cond([
[_.matches({ 'a': 1 }), _.constant('matches A')],
[_.conforms({ 'b': _.isNumber }), _.constant('matches B')],
[_.stubTrue, _.constant('no match')]
]);
func({ 'a': 1, 'b': 2 });
// => 'matches A'
func({ 'a': 0, 'b': 1 });
// => 'matches B'
func({ 'a': '1', 'b': '2' });
// => 'no match'
_.conforms(source)
Создает функцию, которая вызывает свойства-предикаты source с соответствующими значениями свойств заданного объекта, возвращая true, если все предикаты возвращают истинное значение (truthy), иначе false.
Примечание: созданная функция эквивалентна _.conformsTo с частично примененным source.
Начиная с версии
4.0.0
Аргументы
-
source(Object): Объект свойств-предикатов для проверки соответствия.
Возвращает
(Function): Возвращает новую функцию спецификации.
Пример
var objects = [
{ 'a': 2, 'b': 1 },
{ 'a': 1, 'b': 2 }
];
_.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));
// => [{ 'a': 1, 'b': 2 }]
_.constant(value)
Создает функцию, возвращающую value.
Начиная с версии
2.4.0
Аргументы
-
value(*): Значение, возвращаемое новой функцией.
Возвращает
(Function): Возвращает новую функцию-константу.
Пример
var objects = _.times(2, _.constant({ 'a': 1 }));
console.log(objects);
// => [{ 'a': 1 }, { 'a': 1 }]
console.log(objects[0] === objects[1]);
// => true
_.defaultTo(value, defaultValue)
Проверяет value, чтобы определить, следует ли вернуть вместо него значение по умолчанию. defaultValue возвращается, если value имеет значение NaN, null или undefined.
Начиная с версии
4.14.0
Аргументы
-
value(*): Проверяемое значение. -
defaultValue(*): Значение по умолчанию.
Возвращает
(*): Возвращает результирующее значение.
Пример
_.defaultTo(1, 10); // => 1 _.defaultTo(undefined, 10); // => 10
_.flow([funcs])
Создает функцию, возвращающую результат вызова переданных функций с привязкой this созданной функции, где каждому последующему вызову передается возвращаемое значение предыдущего.
Начиная с версии
3.0.0
Аргументы
-
[funcs](...(Function|Function[])): Функции для вызова.
Возвращает
(Function): Возвращает новую составную функцию.
Пример
function square(n) {
return n * n;
}
var addSquare = _.flow([_.add, square]);
addSquare(1, 2);
// => 9
_.flowRight([funcs])
Этот метод аналогичен _.flow, за исключением того, что он создает функцию, вызывающую переданные функции справа налево.
Начиная с версии
3.0.0
Аргументы
-
[funcs](...(Function|Function[])): Функции для вызова.
Возвращает
(Function): Возвращает новую составную функцию.
Пример
function square(n) {
return n * n;
}
var addSquare = _.flowRight([square, _.add]);
addSquare(1, 2);
// => 9
_.identity(value)
Этот метод возвращает первый полученный аргумент.
Начиная с версии
0.1.0
Аргументы
-
value(*): Любое значение.
Возвращает
(*): Возвращает value.
Пример
var object = { 'a': 1 };
console.log(_.identity(object) === object);
// => true
_.iteratee([func=_.identity])
Создает функцию, вызывающую func с аргументами созданной функции. Если func является именем свойства, созданная функция возвращает значение свойства для заданного элемента. Если func является массивом или объектом, созданная функция возвращает true для элементов, содержащих эквивалентные свойства исходного объекта, иначе возвращает false.
Начиная с версии
4.0.0
Аргументы
-
[func=_.identity](*): Значение для преобразования в функцию обратного вызова.
Возвращает
(Function): Возвращает функцию обратного вызова.
Пример
var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'fred', 'age': 40, 'active': false }
];
// The `_.matches` iteratee shorthand.
_.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));
// => [{ 'user': 'barney', 'age': 36, 'active': true }]
// The `_.matchesProperty` iteratee shorthand.
_.filter(users, _.iteratee(['user', 'fred']));
// => [{ 'user': 'fred', 'age': 40 }]
// The `_.property` iteratee shorthand.
_.map(users, _.iteratee('user'));
// => ['barney', 'fred']
// Create custom iteratee shorthands.
_.iteratee = _.wrap(_.iteratee, function(iteratee, func) {
return !_.isRegExp(func) ? iteratee(func) : function(string) {
return func.test(string);
};
});
_.filter(['abc', 'def'], /ef/);
// => ['def']
_.matches(source)
Создает функцию, которая выполняет частичное глубокое сравнение заданного объекта с source, возвращая true, если заданный объект имеет эквивалентные значения свойств, иначе false.
Примечание: созданная функция эквивалентна _.isMatch с частично примененным source.
При частичном сравнении значения пустых массивов и пустых объектов в source будут сопоставляться с любым массивом или объектом соответственно. Список поддерживаемых сравнений значений см. в _.isEqual.
Примечание: несколько значений можно проверить, объединив несколько сопоставителей с помощью _.overSome
Начиная с версии
3.0.0
Аргументы
-
source(Object): Объект со значениями свойств для сопоставления.
Возвращает
(Function): Возвращает новую функцию спецификации.
Пример
var objects = [
{ 'a': 1, 'b': 2, 'c': 3 },
{ 'a': 4, 'b': 5, 'c': 6 }
];
_.filter(objects, _.matches({ 'a': 4, 'c': 6 }));
// => [{ 'a': 4, 'b': 5, 'c': 6 }]
// Checking for several possible values
_.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));
// => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]
_.matchesProperty(path, srcValue)
Создает функцию, которая выполняет частичное глубокое сравнение значения по пути path заданного объекта со значением srcValue, возвращая true, если значение объекта эквивалентно, иначе false.
Примечание: при частичном сравнении значения пустых массивов и пустых объектов в srcValue будут сопоставляться с любым массивом или объектом соответственно. Список поддерживаемых сравнений значений см. в _.isEqual.
Примечание: несколько значений можно проверить, объединив несколько сопоставителей с помощью _.overSome
Начиная с версии
3.2.0
Аргументы
-
path(Array|string): Путь к извлекаемому свойству. -
srcValue(*): Значение для сопоставления.
Возвращает
(Function): Возвращает новую функцию спецификации.
Пример
var objects = [
{ 'a': 1, 'b': 2, 'c': 3 },
{ 'a': 4, 'b': 5, 'c': 6 }
];
_.find(objects, _.matchesProperty('a', 4));
// => { 'a': 4, 'b': 5, 'c': 6 }
// Checking for several possible values
_.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));
// => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]
_.method(path, [args])
Создает функцию, вызывающую метод по пути path заданного объекта. Любые дополнительные аргументы передаются вызываемому методу.
Начиная с версии
3.7.0
Аргументы
-
path(Array|string): Путь к вызываемому методу. -
[args](...*): Аргументы для вызова метода.
Возвращает
(Function): Возвращает новую функцию вызова.
Пример
var objects = [
{ 'a': { 'b': _.constant(2) } },
{ 'a': { 'b': _.constant(1) } }
];
_.map(objects, _.method('a.b'));
// => [2, 1]
_.map(objects, _.method(['a', 'b']));
// => [2, 1]
_.methodOf(object, [args])
Противоположность метода _.method; этот метод создает функцию, вызывающую метод по заданному пути объекта object. Любые дополнительные аргументы передаются вызываемому методу.
Начиная с версии
3.7.0
Аргументы
-
object(Object): Запрашиваемый объект. -
[args](...*): Аргументы для вызова метода.
Возвращает
(Function): Возвращает новую функцию вызова.
Пример
var array = _.times(3, _.constant),
object = { 'a': array, 'b': array, 'c': array };
_.map(['a[2]', 'c[0]'], _.methodOf(object));
// => [2, 0]
_.map([['a', '2'], ['c', '0']], _.methodOf(object));
// => [2, 0]
_.mixin([object=lodash], source, [options={}])
Добавляет все собственные перечислимые строковые функциональные свойства исходного объекта в целевой объект. Если object является функцией, методы также добавляются в ее прототип.
Примечание: используйте _.runInContext для создания чистой функции lodash во избежание конфликтов, вызванных изменением оригинала.
Начиная с версии
0.1.0
Аргументы
-
[object=lodash](Function|Object): Целевой объект. -
source(Object): Объект добавляемых функций. -
[options={}](Object): Объект с параметрами. -
[options.chain=true](boolean): Указывает, поддерживают ли примеси цепочечные вызовы.
Возвращает
(*): Возвращает object.
Пример
function vowels(string) {
return _.filter(string, function(v) {
return /[aeiou]/i.test(v);
});
}
_.mixin({ 'vowels': vowels });
_.vowels('fred');
// => ['e']
_('fred').vowels().value();
// => ['e']
_.mixin({ 'vowels': vowels }, { 'chain': false });
_('fred').vowels();
// => ['e']
_.noConflict()
Возвращает переменную _ к ее предыдущему значению и возвращает ссылку на функцию lodash.
Начиная с версии
0.1.0
Возвращает
(Function): Возвращает функцию lodash.
Пример
var lodash = _.noConflict();
_.noop()
Этот метод возвращает undefined.
Начиная с версии
2.3.0
Пример
_.times(2, _.noop); // => [undefined, undefined]
_.nthArg([n=0])
Создает функцию, которая получает аргумент по индексу n. Если n отрицательное, возвращается n-й аргумент с конца.
Начиная с версии
4.0.0
Аргументы
-
[n=0](number): Индекс возвращаемого аргумента.
Возвращает
(Function): Возвращает новую сквозную функцию.
Пример
var func = _.nthArg(1);
func('a', 'b', 'c', 'd');
// => 'b'
var func = _.nthArg(-2);
func('a', 'b', 'c', 'd');
// => 'c'
_.over([iteratees=[_.identity]])
Создает функцию, которая вызывает iteratees с полученными аргументами и возвращает их результаты.
Начиная с версии
4.0.0
Аргументы
-
[iteratees=[_.identity]](...(Function|Function[])): Вызываемые функции-итераторы.
Возвращает
(Function): Возвращает новую функцию.
Пример
var func = _.over([Math.max, Math.min]); func(1, 2, 3, 4); // => [4, 1]
_.overEvery([predicates=[_.identity]])
Создает функцию, которая проверяет, возвращают ли все предикаты predicates истинное значение (truthy) при вызове с полученными аргументами.
Для указания предикатов возможны следующие сокращения: передайте Object, и он будет использован в качестве параметра для _.matches для создания предиката; передайте Array параметров для _.matchesProperty, и предикат будет создан с их использованием.
Начиная с версии
4.0.0
Аргументы
-
[predicates=[_.identity]](...(Function|Function[])): Проверяемые предикаты.
Возвращает
(Function): Возвращает новую функцию.
Пример
var func = _.overEvery([Boolean, isFinite]);
func('1');
// => true
func(null);
// => false
func(NaN);
// => false
_.overSome([predicates=[_.identity]])
Создает функцию, которая проверяет, возвращает ли хотя бы один из предикатов predicates истинное значение (truthy) при вызове с полученными аргументами.
Для указания предикатов возможны следующие сокращения: передайте Object, и он будет использован в качестве параметра для _.matches для создания предиката; передайте Array параметров для _.matchesProperty, и предикат будет создан с их использованием.
Начиная с версии
4.0.0
Аргументы
-
[predicates=[_.identity]](...(Function|Function[])): Проверяемые предикаты.
Возвращает
(Function): Возвращает новую функцию.
Пример
var func = _.overSome([Boolean, isFinite]);
func('1');
// => true
func(null);
// => true
func(NaN);
// => false
var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])
var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])
_.property(path)
Создает функцию, возвращающую значение по пути path заданного объекта.
Начиная с версии
2.4.0
Аргументы
-
path(Array|string): Путь к получаемому свойству.
Возвращает
(Function): Возвращает новую функцию-аксессор.
Пример
var objects = [
{ 'a': { 'b': 2 } },
{ 'a': { 'b': 1 } }
];
_.map(objects, _.property('a.b'));
// => [2, 1]
_.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
// => [1, 2]
_.propertyOf(object)
Противоположность _.property; этот метод создает функцию, которая возвращает значение по заданному пути в object.
Начиная с версии
3.0.0
Аргументы
-
object(Object): Запрашиваемый объект.
Возвращает
(Function): Возвращает новую функцию-аксессор.
Пример
var array = [0, 1, 2],
object = { 'a': array, 'b': array, 'c': array };
_.map(['a[2]', 'c[0]'], _.propertyOf(object));
// => [2, 0]
_.map([['a', '2'], ['c', '0']], _.propertyOf(object));
// => [2, 0]
_.range([start=0], end, [step=1])
Создает массив чисел (положительных и/или отрицательных) в диапазоне от start до, но не включая, end. Шаг -1 используется, если указан отрицательный start без указания end или step. Если end не указан, он устанавливается в start, а start затем устанавливается в 0.
Примечание: JavaScript следует стандарту IEEE-754 для вычисления значений с плавающей запятой, что может приводить к неожиданным результатам.
Начиная с версии
0.1.0
Аргументы
-
[start=0](number): Начало диапазона. -
end(number): Конец диапазона. -
[step=1](number): Значение шага увеличения или уменьшения.
Возвращает
(Array): Возвращает диапазон чисел.
Пример
_.range(4); // => [0, 1, 2, 3] _.range(-4); // => [0, -1, -2, -3] _.range(1, 5); // => [1, 2, 3, 4] _.range(0, 20, 5); // => [0, 5, 10, 15] _.range(0, -4, -1); // => [0, -1, -2, -3] _.range(1, 4, 0); // => [1, 1, 1] _.range(0); // => []
_.rangeRight([start=0], end, [step=1])
Этот метод похож на _.range, за исключением того, что он заполняет значения в порядке убывания.
Начиная с версии
4.0.0
Аргументы
-
[start=0](number): Начало диапазона. -
end(number): Конец диапазона. -
[step=1](number): Значение шага увеличения или уменьшения.
Возвращает
(Array): Возвращает диапазон чисел.
Пример
_.rangeRight(4); // => [3, 2, 1, 0] _.rangeRight(-4); // => [-3, -2, -1, 0] _.rangeRight(1, 5); // => [4, 3, 2, 1] _.rangeRight(0, 20, 5); // => [15, 10, 5, 0] _.rangeRight(0, -4, -1); // => [-3, -2, -1, 0] _.rangeRight(1, 4, 0); // => [1, 1, 1] _.rangeRight(0); // => []
_.runInContext([context=root])
Создает новую исходную функцию lodash, используя объект context.
Начиная с версии
1.1.0
Аргументы
-
[context=root](Object): Объект контекста.
Возвращает
(Function): Возвращает новую функцию lodash.
Пример
_.mixin({ 'foo': _.constant('foo') });
var lodash = _.runInContext();
lodash.mixin({ 'bar': lodash.constant('bar') });
_.isFunction(_.foo);
// => true
_.isFunction(_.bar);
// => false
lodash.isFunction(lodash.foo);
// => false
lodash.isFunction(lodash.bar);
// => true
// Create a suped-up `defer` in Node.js.
var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;
_.stubArray()
Этот метод возвращает новый пустой массив.
Начиная с версии
4.13.0
Возвращает
(Array): Возвращает новый пустой массив.
Пример
var arrays = _.times(2, _.stubArray); console.log(arrays); // => [[], []] console.log(arrays[0] === arrays[1]); // => false
_.stubFalse()
Этот метод возвращает false.
Начиная с версии
4.13.0
Возвращает
(boolean): Возвращает false.
Пример
_.times(2, _.stubFalse); // => [false, false]
_.stubObject()
Этот метод возвращает новый пустой объект.
Начиная с версии
4.13.0
Возвращает
(Object): Возвращает новый пустой объект.
Пример
var objects = _.times(2, _.stubObject);
console.log(objects);
// => [{}, {}]
console.log(objects[0] === objects[1]);
// => false
_.stubString()
Этот метод возвращает пустую строку.
Начиная с версии
4.13.0
Возвращает
(string): Возвращает пустую строку.
Пример
_.times(2, _.stubString); // => ['', '']
_.stubTrue()
Этот метод возвращает true.
Начиная с версии
4.13.0
Возвращает
(boolean): Возвращает true.
Пример
_.times(2, _.stubTrue); // => [true, true]
_.times(n, [iteratee=_.identity])
Вызывает итератор n раз, возвращая массив результатов каждого вызова. Итератор вызывается с одним аргументом: (index).
Начиная с версии
0.1.0
Аргументы
-
n(number): Количество вызововiteratee. -
[iteratee=_.identity](Function): Функция, вызываемая на каждой итерации.
Возвращает
(Array): Возвращает массив результатов.
Пример
_.times(3, String); // => ['0', '1', '2'] _.times(4, _.constant(0)); // => [0, 0, 0, 0]
_.toPath(value)
Преобразует value в массив пути к свойству.
Начиная с версии
4.0.0
Аргументы
-
value(*): Преобразуемое значение.
Возвращает
(Array): Возвращает новый массив пути к свойству.
Пример
_.toPath('a.b.c');
// => ['a', 'b', 'c']
_.toPath('a[0].b.c');
// => ['a', '0', 'b', 'c']
_.uniqueId([prefix=''])
Генерирует уникальный идентификатор. Если указан prefix, идентификатор добавляется к нему.
Начиная с версии
0.1.0
Аргументы
-
[prefix=''](string): Префикс для идентификатора.
Возвращает
(string): Возвращает уникальный идентификатор.
Пример
_.uniqueId('contact_');
// => 'contact_104'
_.uniqueId();
// => '105'
Свойства
_.VERSION
(string): Номер семантической версии.
_.templateSettings
(Object): По умолчанию разделители шаблонов, используемые lodash, аналогичны тем, что используются во встроенном Ruby (ERB), а также шаблонным строкам ES2015. Измените следующие настройки шаблона, чтобы использовать альтернативные разделители.
Безопасность: см. модель угроз — _.template небезопасен и будет удален в v5.
_.templateSettings.escape
(RegExp): Используется для обнаружения значений свойств data, которые должны экранироваться для HTML.
_.templateSettings.evaluate
(RegExp): Используется для обнаружения кода, подлежащего выполнению.
_.templateSettings.imports
(Object): Используется для импорта переменных в скомпилированный шаблон.
_.templateSettings.interpolate
(RegExp): Используется для обнаружения внедряемых значений свойств data.
_.templateSettings.variable
(string): Используется для ссылки на объект данных в тексте шаблона.
Методы
_.templateSettings.imports._
Ссылка на функцию lodash.
© JS Foundation and other contributors
Licensed under the MIT License.
https://lodash.com/docs/4.18.1