lodash
Методы «Массива»
_.chunk(array, [size=1])
Создаёт массив элементов, разделённых на группы длиной size. Если collection невозможно разделить равномерно, последний фрагмент будет содержать оставшиеся элементы.
Аргументы
-
array(Массив): Обрабатываемый массив. -
[size=1](число): Длина каждой группы.
Возвращаемое значение
(Массив): Возвращает новый массив, содержащий фрагменты.
Пример
_.chunk(['a', 'b', 'c', 'd'], 2); // => [['a', 'b'], ['c', 'd']] _.chunk(['a', 'b', 'c', 'd'], 3); // => [['a', 'b', 'c'], ['d']]
_.compact(array)
Создаёт массив, из которого удалены все ложные значения. Ложными являются значения false, null, 0, "", undefined, и NaN.
Аргументы
-
array(Массив): Массив для компактизации.
Возвращаемое значение
(Массив): Возвращает новый массив отфильтрованных значений.
Пример
_.compact([0, 1, false, 2, '', 3]); // => [1, 2, 3]
_.difference(array, [values])
Создаёт массив уникальных array значений, отсутствующих в других заданных массивах, используя SameValueZero для сравнения на равенство.
Аргументы
-
array(Массив): Массив для проверки. -
[values](...Массив): Массивы значений для исключения.
Возвращаемое значение
(Массив): Возвращает новый массив отфильтрованных значений.
Пример
_.difference([1, 2, 3], [4, 2]); // => [1, 3]
_.drop(array, [n=1])
Создаёт фрагмент массива, удалив n элементов с начала.
Аргументы
-
array(Массив): Массив для обработки. -
[n=1](число): Количество элементов для удаления.
Возвращаемое значение
(Массив): Возвращает фрагмент массива.
Пример
_.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])
Создаёт фрагмент массива, удалив n элементов с конца.
Аргументы
-
array(Массив): Массив для обработки. -
[n=1](число): Количество элементов для удаления.
Возвращаемое значение
(Массив): Возвращает фрагмент массива.
Пример
_.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], [thisArg])
Создаёт фрагмент массива, исключая элементы, удалённые с конца. Элементы удаляются до тех пор, пока predicate не вернёт ложное значение. Предикат привязан к thisArg и вызывается с тремя аргументами: (значение, индекс, массив).
Если для predicate указано имя свойства, созданная функция обратного вызова в стиле _.property возвращает значение свойства данного элемента.
Если для thisArg также указано значение, созданная функция обратного вызова в стиле _.matchesProperty возвращает true для элементов, имеющих соответствующее значение свойства, иначе false.
Если для predicate указан объект, созданная функция обратного вызова в стиле _.matches возвращает true для элементов, соответствующих свойствам заданного объекта, иначе false.
Аргументы
-
array(Массив): Массив для обработки. -
[predicate=_.identity](Функция|Объект|строка): Функция, вызываемая при каждом итерационном шаге. -
[thisArg](*): Связываниеthisдляpredicate.
Возвращает
(Массив): Возвращает срез array.
Пример
_.dropRightWhile([1, 2, 3], function(n) {
return n > 1;
});
// => [1]
var users = [
{ 'user': 'barney', 'active': true },
{ 'user': 'fred', 'active': false },
{ 'user': 'pebbles', 'active': false }
];
// using the `_.matches` callback shorthand
_.pluck(_.dropRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user');
// => ['barney', 'fred']
// using the `_.matchesProperty` callback shorthand
_.pluck(_.dropRightWhile(users, 'active', false), 'user');
// => ['barney']
// using the `_.property` callback shorthand
_.pluck(_.dropRightWhile(users, 'active'), 'user');
// => ['barney', 'fred', 'pebbles']
_.dropWhile(массив, [предикат=_.identity], [thisArg])
Создает срез array, исключая элементы, удаленные с начала. Элементы удаляются до тех пор, пока predicate не вернёт значение, ложное по значению. Предикат привязан к thisArg и вызывается с тремя аргументами: (значение, индекс, массив).
Если для predicate указано имя свойства, созданная _.property-стиль обратного вызова возвращает значение свойства данного элемента.
Если также указано значение для thisArg, созданный _.matchesProperty-стиль обратного вызова возвращает true для элементов, имеющих соответствующее значение свойства, иначе false.
Если для predicate указан объект, созданный _.matches-стиль обратного вызова возвращает true для элементов, имеющих свойства данного объекта, иначе false.
Аргументы
-
array(Массив): Массив для запроса. -
[predicate=_.identity](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisсpredicate.
Возвращает
(Массив): Возвращает срез array.
Пример
_.dropWhile([1, 2, 3], function(n) {
return n < 3;
});
// => [3]
var users = [
{ 'user': 'barney', 'active': false },
{ 'user': 'fred', 'active': false },
{ 'user': 'pebbles', 'active': true }
];
// using the `_.matches` callback shorthand
_.pluck(_.dropWhile(users, { 'user': 'barney', 'active': false }), 'user');
// => ['fred', 'pebbles']
// using the `_.matchesProperty` callback shorthand
_.pluck(_.dropWhile(users, 'active', false), 'user');
// => ['pebbles']
// using the `_.property` callback shorthand
_.pluck(_.dropWhile(users, 'active'), 'user');
// => ['barney', 'fred', 'pebbles']
_.fill(массив, значение, [начало=0], [конец=длина_массива])
Заполняет элементы array значением value с позиции start до, но не включая, end.
Примечание: Этот метод изменяет array.
Аргументы
-
array(Массив): Массив для заполнения. -
value(*): Значение для заполненияarray. -
[start=0](число): Начальная позиция. -
[end=array.length](число): Конечная позиция.
Возвращает
(Массив): Возвращает 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], '*', 1, 2); // => [4, '*', 8]
_.findIndex(массив, [предикат=_.identity], [thisArg])
Этот метод похож на _.find, за исключением того, что он возвращает индекс первого элемента, для которого predicate возвращает истинное значение, а не сам элемент.
Если для predicate указано имя свойства, созданный _.property-стиль обратного вызова возвращает значение свойства данного элемента.
Если также указано значение для thisArg, созданный _.matchesProperty-стиль обратного вызова возвращает true для элементов, имеющих соответствующее значение свойства, иначе false.
Если для predicate указан объект, созданный _.matches-стиль обратного вызова возвращает true для элементов, имеющих свойства данного объекта, иначе false.
Аргументы
-
array(Массив): Массив для поиска. -
[predicate=_.identity](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisсpredicate.
Возвращает
(число): Возвращает индекс найденного элемента, иначе -1.
Пример
var users = [
{ 'user': 'barney', 'active': false },
{ 'user': 'fred', 'active': false },
{ 'user': 'pebbles', 'active': true }
];
_.findIndex(users, function(chr) {
return chr.user == 'barney';
});
// => 0
// using the `_.matches` callback shorthand
_.findIndex(users, { 'user': 'fred', 'active': false });
// => 1
// using the `_.matchesProperty` callback shorthand
_.findIndex(users, 'active', false);
// => 0
// using the `_.property` callback shorthand
_.findIndex(users, 'active');
// => 2
_.findLastIndex(массив, [предикат=_.identity], [thisArg])
Этот метод похож на _.findIndex, за исключением того, что он итерирует по элементам collection справа налево.
Если для predicate указано имя свойства, созданный _.property-стиль обратного вызова возвращает значение свойства данного элемента.
Если также указано значение для thisArg, созданный _.matchesProperty-стиль обратного вызова возвращает true для элементов, имеющих соответствующее значение свойства, иначе false.
Если для predicate указан объект, созданный _.matches-стиль обратного вызова возвращает true для элементов, имеющих свойства данного объекта, иначе false.
Аргументы
-
array(Массив): Массив для поиска. -
[predicate=_.identity](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisсpredicate.
Возвращает
(число): Возвращает индекс найденного элемента, иначе -1.
Пример
var users = [
{ 'user': 'barney', 'active': true },
{ 'user': 'fred', 'active': false },
{ 'user': 'pebbles', 'active': false }
];
_.findLastIndex(users, function(chr) {
return chr.user == 'pebbles';
});
// => 2
// using the `_.matches` callback shorthand
_.findLastIndex(users, { 'user': 'barney', 'active': true });
// => 0
// using the `_.matchesProperty` callback shorthand
_.findLastIndex(users, 'active', false);
// => 2
// using the `_.property` callback shorthand
_.findLastIndex(users, 'active');
// => 0
_.first(массив)
Возвращает первый элемент array.
Псевдонимы
_.head
Аргументы
-
array(Массив): Массив для запроса.
Возвращает
(*): Возвращает первый элемент array.
Пример
_.first([1, 2, 3]); // => 1 _.first([]); // => undefined
_.flatten(array, [isDeep])
Разворачивает вложенный массив. Если isDeep равно true, массив рекурсивно развернётся, в противном случае он развернётся только на один уровень.
Аргументы
-
array(Массив): Массив для разворачивания. -
[isDeep](boolean): Указать глубокое разворачивание.
Возвращает
(Массив): Возвращает новый развернутый массив.
Пример
_.flatten([1, [2, 3, [4]]]); // => [1, 2, 3, [4]] // using `isDeep` _.flatten([1, [2, 3, [4]]], true); // => [1, 2, 3, 4]
_.flattenDeep(array)
Рекурсивно разворачивает вложенный массив.
Аргументы
-
array(Массив): Массив для рекурсивного разворачивания.
Возвращает
(Массив): Возвращает новый развернутый массив.
Пример
_.flattenDeep([1, [2, 3, [4]]]); // => [1, 2, 3, 4]
_.indexOf(array, value, [fromIndex=0])
Возвращает индекс первого вхождения value в array с использованием SameValueZero для сравнения на равенство. Если fromIndex отрицательно, оно используется как смещение от конца array. Если array отсортирован, предоставляя true для fromIndex выполняется более быстрый двоичный поиск.
Аргументы
-
array(Массив): Массив для поиска. -
value(*): Значение для поиска. -
[fromIndex=0](boolean|number): Индекс для начала поиска илиtrueдля выполнения двоичного поиска в отсортированном массиве.
Возвращает
(number): Возвращает индекс совпавшего значения, в противном случае -1.
Пример
_.indexOf([1, 2, 1, 2], 2); // => 1 // using `fromIndex` _.indexOf([1, 2, 1, 2], 2, 2); // => 3 // performing a binary search _.indexOf([1, 1, 2, 2], 2, true); // => 2
_.initial(array)
Возвращает все элементы array кроме последнего.
Аргументы
-
array(Массив): Массив для запроса.
Возвращает
(Массив): Возвращает срез array.
Пример
_.initial([1, 2, 3]); // => [1, 2]
_.intersection([arrays])
Создаёт массив уникальных значений, которые присутствуют во всех предоставленных массивах, используя SameValueZero для сравнения на равенство.
Аргументы
-
[arrays](...Array): Массивы для проверки.
Возвращает
(Массив): Возвращает новый массив общих значений.
Пример
_.intersection([1, 2], [4, 2], [2, 1]); // => [2]
_.last(array)
Возвращает последний элемент array.
Аргументы
-
array(Массив): Массив для запроса.
Возвращает
(*): Возвращает последний элемент array.
Пример
_.last([1, 2, 3]); // => 3
_.lastIndexOf(array, value, [fromIndex=array.length-1])
Этот метод похож на _.indexOf, за исключением того, что он итерирует элементы array справа налево.
Аргументы
-
array(Массив): Массив для поиска. -
value(*): Значение для поиска. -
[fromIndex=array.length-1](boolean|number): Индекс для начала поиска илиtrueдля выполнения двоичного поиска в отсортированном массиве.
Возвращает
(number): Возвращает индекс совпавшего значения, в противном случае -1.
Пример
_.lastIndexOf([1, 2, 1, 2], 2); // => 3 // using `fromIndex` _.lastIndexOf([1, 2, 1, 2], 2, 2); // => 1 // performing a binary search _.lastIndexOf([1, 1, 2, 2], 2, true); // => 3
_.pull(array, [values])
Удаляет все предоставленные значения из array с использованием SameValueZero для сравнения на равенство.
Примечание: В отличие от _.without, этот метод изменяет array.
Аргументы
-
array(Массив): Массив для изменения. -
[values](...*): Значения для удаления.
Возвращает
(Массив): Возвращает array.
Пример
var array = [1, 2, 3, 1, 2, 3]; _.pull(array, 2, 3); console.log(array); // => [1, 1]
_.pullAt(array, [indexes])
Удаляет элементы из array соответствующие заданным индексам и возвращает массив удалённых элементов. Индексы могут быть заданы как массив индексов или как отдельные аргументы.
Примечание: В отличие от _.at, этот метод изменяет array.
Аргументы
-
array(Массив): Массив для изменения. -
[indexes](...(number|number[])): Индексы элементов для удаления, указанные как отдельные индексы или массивы индексов.
Возвращает
(Массив): Возвращает новый массив удалённых элементов.
Пример
var array = [5, 10, 15, 20]; var evens = _.pullAt(array, 1, 3); console.log(array); // => [5, 15] console.log(evens); // => [10, 20]
_.remove(array, [predicate=_.identity], [thisArg])
Удаляет все элементы из array для которых predicate возвращает истинное значение и возвращает массив удалённых элементов. Предикат привязан к thisArg и вызывается с тремя аргументами: (значение, индекс, массив).
Если для predicate указано имя свойства, созданная функция обратного вызова в стиле _.property возвращает значение свойства данного элемента.
Если также указано значение для thisArg , созданная функция обратного вызова в стиле _.matchesProperty возвращает true для элементов, имеющих соответствующее значение свойства, в противном случае false.
Если для predicate указан объект, созданная функция обратного вызова в стиле _.matches возвращает true для элементов, имеющих свойства данного объекта, в противном случае false.
Примечание: В отличие от _.filter, этот метод изменяет array.
Аргументы
-
array(Массив): Массив для изменения. -
[predicate=_.identity](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связывание контекста вызоваthisдляpredicate.
Возвращает
(Массив): Возвращает новый массив удалённых элементов.
Пример
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]
_.rest(array)
Возвращает все элементы array кроме первого.
Псевдонимы
_.tail
Аргументы
-
array(Массив): Массив для запроса.
Возвращает
(Массив): Возвращает срез array.
Пример
_.rest([1, 2, 3]); // => [2, 3]
_.slice(array, [start=0], [end=array.length])
Создаёт срез array с позиции start до, но не включая, позицию end.
Примечание: Этот метод используется вместо Array#slice для поддержки списков узлов в IE < 9 и для гарантии возвращения плотных массивов.
Аргументы
-
array(Массив): Массив для среза. -
[start=0](число): Начальная позиция. -
[end=array.length](число): Конечная позиция.
Возвращает
(Массив): Возвращает срез array.
_.sortedIndex(array, value, [iteratee=_.identity], [thisArg])
Использует двоичный поиск для определения наименьшего индекса, в который следует вставить value в array для сохранения его сортировки. Если функция iteratee задана, она вызывается для value и каждого элемента array для вычисления их ранжирования сортировки. Iteratee привязан к thisArg и вызывается с одним аргументом; (значение).
Если для iteratee указано имя свойства, созданная функция обратного вызова в стиле _.property возвращает значение свойства данного элемента.
Если также указано значение для thisArg , созданная функция обратного вызова в стиле _.matchesProperty возвращает true для элементов, имеющих соответствующее значение свойства, в противном случае false.
Если для iteratee указан объект, созданная функция обратного вызова в стиле _.matches возвращает true для элементов, имеющих свойства данного объекта, в противном случае false.
Аргументы
-
array(Массив): Сортируемый массив для проверки. -
value(*): Значение для оценки. -
[iteratee=_.identity](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляiteratee.
Возвращает
(число): Возвращает индекс, в котором value следует вставить в array.
Пример
_.sortedIndex([30, 50], 40);
// => 1
_.sortedIndex([4, 4, 5, 5], 5);
// => 2
var dict = { 'data': { 'thirty': 30, 'forty': 40, 'fifty': 50 } };
// using an iteratee function
_.sortedIndex(['thirty', 'fifty'], 'forty', function(word) {
return this.data[word];
}, dict);
// => 1
// using the `_.property` callback shorthand
_.sortedIndex([{ 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x');
// => 1
_.sortedLastIndex(array, value, [iteratee=_.identity], [thisArg])
Этот метод похож на _.sortedIndex, за исключением того, что он возвращает наибольший индекс, в который value следует вставить в array для сохранения его порядка сортировки.
Аргументы
-
array(Массив): Сортируемый массив для проверки. -
value(*): Значение для оценки. -
[iteratee=_.identity](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляiteratee.
Возвращает
(число): Возвращает индекс, в котором value следует вставить в array.
Пример
_.sortedLastIndex([4, 4, 5, 5], 5); // => 4
_.take(array, [n=1])
Создаёт фрагмент массива array с элементами, взятыми с начала.
Аргументы
-
array(Массив): Массив для запроса. -
[n=1](число): Количество элементов для взятия.
Возвращает
(Массив): Возвращает фрагмент 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 с элементами, взятыми с конца.
Аргументы
-
array(Массив): Массив для запроса. -
[n=1](число): Количество элементов для взятия.
Возвращает
(Массив): Возвращает фрагмент 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], [thisArg])
Создаёт фрагмент array с элементами, взятыми с конца. Элементы берутся до тех пор, пока predicate не вернёт ложное значение. Предикат связан с thisArg, и вызывается с тремя аргументами: (значение, индекс, массив).
Если для predicate задано имя свойства, созданный callback в стиле _.property возвращает значение свойства данного элемента.
Если также для thisArg задано значение, созданный callback в стиле _.matchesProperty возвращает true для элементов, имеющих соответствующее значение свойства, иначе false.
Если для predicate задан объект, созданный callback в стиле _.matches возвращает true для элементов, имеющих свойства заданного объекта, иначе false.
Аргументы
-
array(Массив): Массив для запроса. -
[predicate=_.identity](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляpredicate.
Возвращает
(Массив): Возвращает фрагмент array.
Пример
_.takeRightWhile([1, 2, 3], function(n) {
return n > 1;
});
// => [2, 3]
var users = [
{ 'user': 'barney', 'active': true },
{ 'user': 'fred', 'active': false },
{ 'user': 'pebbles', 'active': false }
];
// using the `_.matches` callback shorthand
_.pluck(_.takeRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user');
// => ['pebbles']
// using the `_.matchesProperty` callback shorthand
_.pluck(_.takeRightWhile(users, 'active', false), 'user');
// => ['fred', 'pebbles']
// using the `_.property` callback shorthand
_.pluck(_.takeRightWhile(users, 'active'), 'user');
// => []
_.takeWhile(array, [predicate=_.identity], [thisArg])
Создаёт фрагмент array с элементами, взятыми с начала. Элементы берутся до тех пор, пока predicate не вернёт ложное значение. Предикат связан с thisArg, и вызывается с тремя аргументами: (значение, индекс, массив).
Если для predicate задано имя свойства, созданный callback в стиле _.property возвращает значение свойства данного элемента.
Если также для thisArg задано значение, созданный callback в стиле _.matchesProperty возвращает true для элементов, имеющих соответствующее значение свойства, иначе false.
Если для predicate задан объект, созданный callback в стиле _.matches возвращает true для элементов, имеющих свойства заданного объекта, иначе false.
Аргументы
-
array(Массив): Массив для запроса. -
[predicate=_.identity](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляpredicate.
Возвращает
(Массив): Возвращает фрагмент array.
Пример
_.takeWhile([1, 2, 3], function(n) {
return n < 3;
});
// => [1, 2]
var users = [
{ 'user': 'barney', 'active': false },
{ 'user': 'fred', 'active': false},
{ 'user': 'pebbles', 'active': true }
];
// using the `_.matches` callback shorthand
_.pluck(_.takeWhile(users, { 'user': 'barney', 'active': false }), 'user');
// => ['barney']
// using the `_.matchesProperty` callback shorthand
_.pluck(_.takeWhile(users, 'active', false), 'user');
// => ['barney', 'fred']
// using the `_.property` callback shorthand
_.pluck(_.takeWhile(users, 'active'), 'user');
// => []
_.union([arrays])
Создаёт массив уникальных значений, в порядке следования, из всех предоставленных массивов, используя SameValueZero для сравнения на равенство.
Аргументы
-
[arrays](...Массив): Массивы для проверки.
Возвращает
(Массив): Возвращает новый массив объединённых значений.
Пример
_.union([1, 2], [4, 2], [2, 1]); // => [1, 2, 4]
_.uniq(array, [isSorted], [iteratee], [thisArg])
Создаёт копию массива без дубликатов, используя SameValueZero для сравнения на равенство, в котором сохраняется только первое вхождение каждого элемента. Предоставление true для isSorted выполняет более быстрый алгоритм поиска для отсортированных массивов. Если предоставлена функция-итератор, она вызывается для каждого элемента в массиве для генерации критерия, по которому вычисляется уникальность. iteratee привязана к thisArg и вызывается с тремя аргументами: (значение, индекс, массив).
Если для iteratee задано имя свойства, созданный callback в стиле _.property возвращает значение свойства данного элемента.
Если также для thisArg задано значение, созданный callback в стиле _.matchesProperty возвращает true для элементов, имеющих соответствующее значение свойства, иначе false.
Если для iteratee задан объект, созданный callback в стиле _.matches возвращает true для элементов, имеющих свойства заданного объекта, иначе false.
Псевдонимы
_.unique
Аргументы
-
array(Массив): Массив для проверки. -
[isSorted](логическое значение): Указывает, что массив отсортирован. -
[iteratee](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляiteratee.
Возвращает
(Массив): Возвращает новый массив без дубликатов.
Пример
_.uniq([2, 1, 2]);
// => [2, 1]
// using `isSorted`
_.uniq([1, 1, 2], true);
// => [1, 2]
// using an iteratee function
_.uniq([1, 2.5, 1.5, 2], function(n) {
return this.floor(n);
}, Math);
// => [1, 2.5]
// using the `_.property` callback shorthand
_.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
// => [{ 'x': 1 }, { 'x': 2 }]
_.unzip(array)
Этот метод похож на _.zip, за исключением того, что он принимает массив сгруппированных элементов и создаёт массив, перегруппировывая элементы в их исходную конфигурацию.
Аргументы
-
array(Массив): Массив сгруппированных элементов для обработки.
Возвращает
(Массив): Возвращает новый массив перегруппированных элементов.
Пример
var zipped = _.zip(['fred', 'barney'], [30, 40], [true, false]); // => [['fred', 30, true], ['barney', 40, false]] _.unzip(zipped); // => [['fred', 'barney'], [30, 40], [true, false]]
_.unzipWith(array, [iteratee], [thisArg])
Этот метод похож на _.unzip, за исключением того, что он принимает итератор для указания того, как должны комбинироваться перегруппированные значения. iteratee привязан к thisArg и вызывается с четырьмя аргументами: (аккумулятор, значение, индекс, группа).
Аргументы
-
array(Массив): Массив сгруппированных элементов для обработки. -
[iteratee](Функция): Функция для объединения перегруппированных значений. -
[thisArg](*): Связываниеthisдляiteratee.
Возвращает
(Массив): Возвращает новый массив перегруппированных элементов.
Пример
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 для сравнения на равенство.
Аргументы
-
array(Массив): Массив для фильтрации. -
[values](...*): Значения для исключения.
Возвращает
(Массив): Возвращает новый массив отфильтрованных значений.
Пример
_.without([1, 2, 1, 3], 1, 2); // => [3]
_.xor([массивы])
Создаёт массив уникальных значений, являющихся симметрической разностью предоставленных массивов.
Аргументы
-
[arrays](...Массив): Массивы для проверки.
Возвращаемое значение
(Массив): Возвращает новый массив значений.
Пример
_.xor([1, 2], [4, 2]); // => [1, 4]
_.zip([массивы])
Создаёт массив сгруппированных элементов, первый из которых содержит первые элементы заданных массивов, второй — вторые элементы заданных массивов и так далее.
Аргументы
-
[arrays](...Массив): Массивы для обработки.
Возвращаемое значение
(Массив): Возвращает новый массив сгруппированных элементов.
Пример
_.zip(['fred', 'barney'], [30, 40], [true, false]); // => [['fred', 30, true], ['barney', 40, false]]
_.zipObject(свойства, [значения=[]])
Обратный метод к _.pairs; этот метод возвращает объект, составленный из массивов имён свойств и значений. Предоставьте либо один двумерный массив, например [[key1, value1], [key2, value2]], либо два массива: один с именами свойств и другой с соответствующими значениями.
Псевдонимы
_.object
Аргументы
-
props(Массив): Имена свойств. -
[values=[]](Массив): Значения свойств.
Возвращаемое значение
(Объект): Возвращает новый объект.
Пример
_.zipObject([['fred', 30], ['barney', 40]]);
// => { 'fred': 30, 'barney': 40 }
_.zipObject(['fred', 'barney'], [30, 40]);
// => { 'fred': 30, 'barney': 40 }
_.zipWith([массивы], [итератор], [thisArg])
Этот метод похож на _.zip, за исключением того, что он принимает итератор для указания того, как следует комбинировать сгруппированные значения. iteratee привязан к thisArg и вызывается с четырьмя аргументами: (аккумулятор, значение, индекс, группа).
Аргументы
-
[arrays](...Массив): Массивы для обработки. -
[iteratee](Функция): Функция для комбинирования сгруппированных значений. -
[thisArg](*): Привязкаthisкiteratee.
Возвращаемое значение
(Массив): Возвращает новый массив сгруппированных элементов.
Пример
_.zipWith([1, 2], [10, 20], [100, 200], _.add); // => [111, 222]
Методы «Цепочки»
_(значение)
Создаёт объект «цепочки», который оборачивает value для включения неявной цепочки. Методы, которые работают с массивами, коллекциями и функциями и возвращают их, могут быть объединены в цепочку. Методы, которые извлекают одно значение или могут возвращать примитивное значение, автоматически завершают цепочку, возвращая необработанное значение. Явную цепочку можно включить, используя _.chain. Выполнение методов в цепочке откладывается до момента, когда _#value вызывается явно или неявно.
Ленивая оценка позволяет нескольким методам поддерживать слияние сокращений. Слияние сокращений — это стратегия оптимизации, которая объединяет вызовы итераторов; это может помочь избежать создания промежуточных структур данных и значительно уменьшить количество вызовов итераторов.
Цепочку поддерживают настраиваемые сборки, только если метод _#value непосредственно или косвенно включён в сборку.
Помимо методов lodash, у обёрток есть методы Array и String.
Методы обёртки Array:concat, join, pop, push, reverse, shift, slice, sort, splice, и unshift
Методы обёртки String:replace и split
Методы обёртки, которые поддерживают слияние сокращений:compact, drop, dropRight, dropRightWhile, dropWhile, filter, first, initial, last, map, pluck, reject, rest, reverse, slice, take, takeRight, takeRightWhile, takeWhile, toArray, и where
Методы обёртки, поддерживающие цепочки:after, ary, assign, at, before, bind, bindAll, bindKey, callback, chain, chunk, commit, compact, concat, constant, countBy, create, curry, debounce, defaults, defaultsDeep, defer, delay, difference, drop, dropRight, dropRightWhile, dropWhile, fill, filter, flatten, flattenDeep, flow, flowRight, forEach, forEachRight, forIn, forInRight, forOwn, forOwnRight, functions, groupBy, indexBy, initial, intersection, invert, invoke, keys, keysIn, map, mapKeys, mapValues, matches, matchesProperty, memoize, merge, method, methodOf, mixin, modArgs, negate, omit, once, pairs, partial, partialRight, partition, pick, plant, pluck, property, propertyOf, pull, pullAt, push, range, rearg, reject, remove, rest, restParam, reverse, set, shuffle, slice, sort, sortBy, sortByAll, sortByOrder, splice, spread, take, takeRight, takeRightWhile, takeWhile, tap, throttle, thru, times, toArray, toPlainObject, transform, union, uniq, unshift, unzip, unzipWith, values, valuesIn, where, without, wrap, xor, zip, zipObject, zipWith
Методы обёртки, которые не поддерживают цепочку по умолчанию:add, attempt, camelCase, capitalize, ceil, clone, cloneDeep, deburr, endsWith, escape, escapeRegExp, every, find, findIndex, findKey, findLast, findLastIndex, findLastKey, findWhere, first, floor, get, gt, gte, has, identity, includes, indexOf, inRange, isArguments, isArray, isBoolean, isDate, isElement, isEmpty, isEqual, isError, isFinite isFunction, isMatch, isNative, isNaN, isNull, isNumber, isObject, isPlainObject, isRegExp, isString, isUndefined, isTypedArray, join, kebabCase, last, lastIndexOf, lt, lte, max, min, noConflict, noop, now, pad, padLeft, padRight, parseInt, pop, random, reduce, reduceRight, repeat, result, round, runInContext, shift, size, snakeCase, some, sortedIndex, sortedLastIndex, startCase, startsWith, sum, template, trim, trimLeft, trimRight, trunc, unescape, uniqueId, value, и words
Метод обёртки sample вернёт значение в обёртке, если n предоставлено, в противном случае возвращается необработанное значение.
Аргументы
-
value(*): Значение для обертывания в экземплярlodash.
Возвращаемое значение
(Объект): Возвращает новый экземпляр обёртки lodash.
Пример
var wrapped = _([1, 2, 3]);
// returns an unwrapped value
wrapped.reduce(function(total, n) {
return total + n;
});
// => 6
// returns a wrapped value
var squares = wrapped.map(function(n) {
return n * n;
});
_.isArray(squares);
// => false
_.isArray(squares.value());
// => true
_.chain(value)
Создаёт объект lodash, который оборачивает value с включённой явной цепочкой вызовов методов.
Аргументы
-
value(*): Значение для обертывания.
Возвращаемое значение
(Объект): Возвращает новый экземпляр обертки lodash.
Пример
var users = [
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 },
{ 'user': 'pebbles', 'age': 1 }
];
var youngest = _.chain(users)
.sortBy('age')
.map(function(chr) {
return chr.user + ' is ' + chr.age;
})
.first()
.value();
// => 'pebbles is 1'
_.tap(value, interceptor, [thisArg])
Этот метод вызывает interceptor и возвращает value. Интерцептор привязан к thisArg и вызывается с одним аргументом; (значение). Цель этого метода — «подключиться» к цепочке вызовов, чтобы выполнить операции над промежуточными результатами в рамках цепочки.
Аргументы
-
value(*): Значение, которое будет передано вinterceptor. -
interceptor(Функция): Функция для вызова. -
[thisArg](*): Связываниеthisдляinterceptor.
Возвращаемое значение
(*): Возвращает value.
Пример
_([1, 2, 3])
.tap(function(array) {
array.pop();
})
.reverse()
.value();
// => [2, 1]
_.thru(value, interceptor, [thisArg])
Этот метод похож на _.tap, за исключением того, что он возвращает результат interceptor.
Аргументы
-
value(*): Значение, которое будет передано вinterceptor. -
interceptor(Функция): Функция для вызова. -
[thisArg](*): Связываниеthisдляinterceptor.
Возвращаемое значение
(*): Возвращает результат interceptor.
Пример
_(' abc ')
.chain()
.trim()
.thru(function(value) {
return [value];
})
.value();
// => ['abc']
_.prototype.chain()
Включает явное цепочное вызывание методов для объекта-обертки.
Возвращаемое значение
(Объект): Возвращает новый экземпляр обертки lodash.
Пример
var users = [
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 }
];
// without explicit chaining
_(users).first();
// => { 'user': 'barney', 'age': 36 }
// with explicit chaining
_(users).chain()
.first()
.pick('user')
.value();
// => { 'user': 'barney' }
_.prototype.commit()
Выполняет цепочку вызовов и возвращает обернутый результат.
Возвращаемое значение
(Объект): Возвращает новый экземпляр обертки 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.concat([values])
Создаёт новый массив, объединяя обернутый массив с дополнительными массивами и/или значениями.
Аргументы
-
[values](...*): Значения для конкатенации.
Возвращаемое значение
(Массив): Возвращает новый объединённый массив.
Пример
var array = [1]; var wrapped = _(array).concat(2, [3], [[4]]); console.log(wrapped.value()); // => [1, 2, 3, [4]] console.log(array); // => [1]
_.prototype.plant()
Создаёт клон цепочки вызовов, подсаживая value в качестве обернутого значения.
Возвращаемое значение
(Объект): Возвращает новый экземпляр обертки lodash.
Пример
var array = [1, 2];
var wrapped = _(array).map(function(value) {
return Math.pow(value, 2);
});
var other = [3, 4];
var otherWrapped = wrapped.plant(other);
otherWrapped.value();
// => [9, 16]
wrapped.value();
// => [1, 4]
_.prototype.reverse()
Инвертирует обернутый массив, так что первый элемент становится последним, второй — предпоследним и так далее.
Примечание: Этот метод изменяет обернутый массив.
Возвращаемое значение
(Объект): Возвращает новый инвертированный экземпляр обертки lodash.
Пример
var array = [1, 2, 3]; _(array).reverse().value() // => [3, 2, 1] console.log(array); // => [3, 2, 1]
_.prototype.toString()
Производит результат принудительного преобразования значения вне обертки в строку.
Возвращаемое значение
(строка): Возвращает преобразованное строковое значение.
Пример
_([1, 2, 3]).toString(); // => '1,2,3'
_.prototype.value()
Выполняет цепочку вызовов для извлечения значения вне обертки.
Псевдонимы
_.prototype.run, _.prototype.toJSON, _.prototype.valueOf
Возвращаемое значение
(*): Возвращает решенный результат значения вне обертки.
Пример
_([1, 2, 3]).value(); // => [1, 2, 3]
Методы «Коллекции»
_.at(collection, [props])
Создаёт массив элементов, соответствующих заданным ключам или индексам collection. Ключи могут быть указаны в виде отдельных аргументов или массивов ключей.
Аргументы
-
collection(Массив|Объект|строка): Коллекция для итерации. -
[props](...(число|массив чисел|строка|массив строк)): Имена свойств или индексы элементов для выбора, указанные по отдельности или в массивах.
Возвращаемое значение
(Массив): Возвращает новый массив выбранных элементов.
Пример
_.at(['a', 'b', 'c'], [0, 2]); // => ['a', 'c'] _.at(['barney', 'fred', 'pebbles'], 0, 2); // => ['barney', 'pebbles']
_.countBy(collection, [iteratee=_.identity], [thisArg])
Создаёт объект, составленный из ключей, сгенерированных из результатов выполнения каждого элемента collection через iteratee. Соответствующее значение каждого ключа — количество раз, когда ключ был возвращён iteratee . iteratee привязана к thisArg и вызывается с тремя аргументами:
(значение, индекс|ключ, коллекция).
Если для iteratee указано имя свойства, созданный обратный вызов в стиле _.property возвращает значение свойства данного элемента.
Если для thisArg также указано значение, созданный обратный вызов в стиле _.matchesProperty возвращает true для элементов, имеющих соответствующее значение свойства, иначе false.
Если для iteratee указан объект, созданный обратный вызов в стиле _.matches возвращает true для элементов, имеющих свойства заданного объекта, иначе false.
Аргументы
-
collection(Массив|Объект|строка): Коллекция для итерации. -
[iteratee=_.identity](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляiteratee.
Возвращаемое значение
(Объект): Возвращает составленный агрегированный объект.
Пример
_.countBy([4.3, 6.1, 6.4], function(n) {
return Math.floor(n);
});
// => { '4': 1, '6': 2 }
_.countBy([4.3, 6.1, 6.4], function(n) {
return this.floor(n);
}, Math);
// => { '4': 1, '6': 2 }
_.countBy(['one', 'two', 'three'], 'length');
// => { '3': 2, '5': 1 }
_.every(collection, [predicate=_.identity], [thisArg])
Проверяет, возвращает ли predicate истинное значение для всех элементов collection. Предикат привязан к thisArg и вызывается с тремя аргументами:
(значение, индекс|ключ, коллекция).
Если для predicate указано имя свойства, созданный обратный вызов в стиле _.property возвращает значение свойства данного элемента.
Если для thisArg также указано значение, созданный обратный вызов в стиле _.matchesProperty возвращает true для элементов, имеющих соответствующее значение свойства, иначе false.
Если для predicate указан объект, созданный обратный вызов в стиле _.matches возвращает true для элементов, имеющих свойства заданного объекта, иначе false.
Псевдонимы
_.all
Аргументы
-
collection(Массив|Объект|строка): Коллекция для итерации. -
[predicate=_.identity](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляpredicate.
Возвращаемое значение
(логическое): Возвращает true , если все элементы проходят проверку предиката, иначе false.
Пример
_.every([true, 1, null, 'yes'], Boolean);
// => false
var users = [
{ 'user': 'barney', 'active': false },
{ 'user': 'fred', 'active': false }
];
// using the `_.matches` callback shorthand
_.every(users, { 'user': 'barney', 'active': false });
// => false
// using the `_.matchesProperty` callback shorthand
_.every(users, 'active', false);
// => true
// using the `_.property` callback shorthand
_.every(users, 'active');
// => false
_.filter(collection, [predicate=_.identity], [thisArg])
Итерируется по элементам collection, возвращая массив всех элементов, для которых predicate возвращает истинное значение. Предикат привязан к thisArg и вызывается с тремя аргументами: (значение, индекс|ключ, коллекция).
Если для predicate указано имя свойства, созданный обратный вызов в стиле _.property возвращает значение свойства данного элемента.
Если для thisArg также указано значение, созданный обратный вызов в стиле _.matchesProperty возвращает true для элементов, имеющих соответствующее значение свойства, иначе false.
Если для predicate указан объект, созданный обратный вызов в стиле _.matches возвращает true для элементов, имеющих свойства заданного объекта, иначе false.
Псевдонимы
_.select
Аргументы
-
collection(Массив|Объект|строка): Коллекция для итерации. -
[predicate=_.identity](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляpredicate.
Возвращает
(Массив): Возвращает новый отфильтрованный массив.
Пример
_.filter([4, 5, 6], function(n) {
return n % 2 == 0;
});
// => [4, 6]
var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'fred', 'age': 40, 'active': false }
];
// using the `_.matches` callback shorthand
_.pluck(_.filter(users, { 'age': 36, 'active': true }), 'user');
// => ['barney']
// using the `_.matchesProperty` callback shorthand
_.pluck(_.filter(users, 'active', false), 'user');
// => ['fred']
// using the `_.property` callback shorthand
_.pluck(_.filter(users, 'active'), 'user');
// => ['barney']
_.find(collection, [predicate=_.identity], [thisArg])
Итерирует элементы collection, возвращая первый элемент, для которого predicate возвращает истинное значение. Предикат привязан к thisArg и вызывается с тремя аргументами: (значение, индекс|ключ, коллекция).
Если для predicate указано имя свойства, созданный вызов в стиле _.property возвращает значение свойства данного элемента.
Если для thisArg также указано значение, созданный вызов в стиле _.matchesProperty возвращает true для элементов, имеющих соответствующее значение свойства, в противном случае false.
Если для predicate указан объект, созданный вызов в стиле _.matches возвращает true для элементов, имеющих свойства данного объекта, в противном случае false.
Псевдонимы
_.detect
Аргументы
-
collection(Массив|Объект|строка): Коллекция для поиска. -
[predicate=_.identity](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляpredicate.
Возвращает
(*): Возвращает соответствующий элемент, в противном случае undefined.
Пример
var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'fred', 'age': 40, 'active': false },
{ 'user': 'pebbles', 'age': 1, 'active': true }
];
_.result(_.find(users, function(chr) {
return chr.age < 40;
}), 'user');
// => 'barney'
// using the `_.matches` callback shorthand
_.result(_.find(users, { 'age': 1, 'active': true }), 'user');
// => 'pebbles'
// using the `_.matchesProperty` callback shorthand
_.result(_.find(users, 'active', false), 'user');
// => 'fred'
// using the `_.property` callback shorthand
_.result(_.find(users, 'active'), 'user');
// => 'barney'
_.findLast(collection, [predicate=_.identity], [thisArg])
Этот метод похож на _.find, за исключением того, что он итерирует элементы collection справа налево.
Аргументы
-
collection(Массив|Объект|строка): Коллекция для поиска. -
[predicate=_.identity](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляpredicate.
Возвращает
(*): Возвращает соответствующий элемент, в противном случае undefined.
Пример
_.findLast([1, 2, 3, 4], function(n) {
return n % 2 == 1;
});
// => 3
_.findWhere(collection, source)
Выполняет глубокое сравнение каждого элемента в collection с объектом source, возвращая первый элемент, имеющий эквивалентные значения свойств.
Примечание: Этот метод поддерживает сравнение массивов, булевых значений, Date объектов, чисел, Object объектов, регулярных выражений и строк. Объекты сравниваются по своим собственным, а не унаследованным, перечисляемым свойствам. Для сравнения отдельного собственного или унаследованного значения свойства см. _.matchesProperty.
Аргументы
-
collection(Массив|Объект|строка): Коллекция для поиска. -
source(Объект): Объект значений свойств для соответствия.
Возвращает
(*): Возвращает соответствующий элемент, в противном случае undefined.
Пример
var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'fred', 'age': 40, 'active': false }
];
_.result(_.findWhere(users, { 'age': 36, 'active': true }), 'user');
// => 'barney'
_.result(_.findWhere(users, { 'age': 40, 'active': false }), 'user');
// => 'fred'
_.forEach(collection, [iteratee=_.identity], [thisArg])
Итерирует элементы collection вызывая iteratee для каждого элемента. iteratee привязан к thisArg и вызывается с тремя аргументами:
(значение, индекс|ключ, коллекция). Функции итератора могут прервать итерацию, явно вернув false.
Примечание: Как и в других методах "Коллекций", объекты со свойством "length" итерируются как массивы. Чтобы избежать этого поведения, можно использовать _.forIn или _.forOwn для итерации по объектам.
Псевдонимы
_.each
Аргументы
-
collection(Массив|Объект|строка): Коллекция для итерации. -
[iteratee=_.identity](Функция): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляiteratee.
Возвращает
(*): Возвращает collection.
Пример
_([1, 2]).forEach(function(n) {
console.log(n);
}).value();
// => logs each value from left to right and returns the array
_.forEach({ 'a': 1, 'b': 2 }, function(n, key) {
console.log(n, key);
});
// => logs each value-key pair and returns the object (iteration order is not guaranteed)
_.forEachRight(collection, [iteratee=_.identity], [thisArg])
Этот метод похож на _.forEach, за исключением того, что он итерирует элементы collection справа налево.
Псевдонимы
_.eachRight
Аргументы
-
collection(Массив|Объект|строка): Коллекция для итерации. -
[iteratee=_.identity](Функция): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляiteratee.
Возвращает
(*): Возвращает collection.
Пример
_([1, 2]).forEachRight(function(n) {
console.log(n);
}).value();
// => logs each value from right to left and returns the array
_.groupBy(collection, [iteratee=_.identity], [thisArg])
Создает объект, составленный из ключей, сгенерированных из результатов выполнения каждого элемента collection через iteratee. Соответствующее значение каждого ключа — массив элементов, ответственных за генерацию ключа. iteratee привязан к thisArg и вызывается с тремя аргументами:
(значение, индекс|ключ, коллекция).
Если для iteratee указано имя свойства, созданный вызов в стиле _.property возвращает значение свойства данного элемента.
Если для thisArg также указано значение, созданный вызов в стиле _.matchesProperty возвращает true для элементов, имеющих соответствующее значение свойства, в противном случае false.
Если для iteratee указан объект, созданный вызов в стиле _.matches возвращает true для элементов, имеющих свойства данного объекта, в противном случае false.
Аргументы
-
collection(Массив|Объект|строка): Коллекция для итерации. -
[iteratee=_.identity](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляiteratee.
Возвращает
(Объект): Возвращает составленный агрегированный объект.
Пример
_.groupBy([4.2, 6.1, 6.4], function(n) {
return Math.floor(n);
});
// => { '4': [4.2], '6': [6.1, 6.4] }
_.groupBy([4.2, 6.1, 6.4], function(n) {
return this.floor(n);
}, Math);
// => { '4': [4.2], '6': [6.1, 6.4] }
// using the `_.property` callback shorthand
_.groupBy(['one', 'two', 'three'], 'length');
// => { '3': ['one', 'two'], '5': ['three'] }
_.includes(collection, target, [fromIndex=0])
Проверяет, находится ли target в collection с использованием SameValueZero для сравнения на равенство. Если fromIndex отрицательно, оно используется как смещение от конца collection.
Псевдонимы
_.contains, _.include
Аргументы
-
collection(Массив|Объект|строка): Коллекция для поиска. -
target(*): Значение для поиска. -
[fromIndex=0](число): Индекс для поиска.
Возвращает
(логическое значение): Возвращает true если соответствующий элемент найден, в противном случае false.
Пример
_.includes([1, 2, 3], 1);
// => true
_.includes([1, 2, 3], 1, 2);
// => false
_.includes({ 'user': 'fred', 'age': 40 }, 'fred');
// => true
_.includes('pebbles', 'eb');
// => true
_.indexBy(collection, [iteratee=_.identity], [thisArg])
Создает объект, составленный из ключей, сгенерированных из результатов выполнения каждого элемента collection через iteratee. Соответствующее значение каждого ключа — последний элемент, ответственный за генерацию ключа. Функция итератора привязана к thisArg и вызывается с тремя аргументами:
(значение, индекс|ключ, коллекция).
Если для iteratee указано имя свойства, созданный вызов в стиле _.property возвращает значение свойства данного элемента.
Если для thisArg также указано значение, созданный вызов в стиле _.matchesProperty возвращает true для элементов, имеющих соответствующее значение свойства, в противном случае false.
Если для iteratee указан объект, созданный вызов в стиле _.matches возвращает true для элементов, имеющих свойства данного объекта, в противном случае false.
Аргументы
-
collection(Массив|Объект|строка): Коллекция для итерации. -
[iteratee=_.identity](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляiteratee.
Возвращает
(Объект): Возвращает составленный агрегированный объект.
Пример
var keyData = [
{ 'dir': 'left', 'code': 97 },
{ 'dir': 'right', 'code': 100 }
];
_.indexBy(keyData, 'dir');
// => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
_.indexBy(keyData, function(object) {
return String.fromCharCode(object.code);
});
// => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
_.indexBy(keyData, function(object) {
return this.fromCharCode(object.code);
}, String);
// => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
_.invoke(collection, path, [args])
Вызывает метод в path каждого элемента в collection, возвращая массив результатов каждого вызываемого метода. Любые дополнительные аргументы передаются каждому вызываемому методу. Если methodName является функцией, она вызывается для каждого элемента в collection, и this привязывается к каждому элементу.
Аргументы
-
collection(Массив|Объект|строка): Коллекция для итерирования. -
path(Массив|Функция|строка): Путь к методу для вызова или функция, вызываемая на каждой итерации. -
[args](...*): Аргументы для вызова метода.
Возвращаемое значение
(Массив): Возвращает массив результатов.
Пример
_.invoke([[5, 1, 7], [3, 2, 1]], 'sort'); // => [[1, 5, 7], [1, 2, 3]] _.invoke([123, 456], String.prototype.split, ''); // => [['1', '2', '3'], ['4', '5', '6']]
_.map(collection, [iteratee=_.identity], [thisArg])
Создаёт массив значений, пропуская каждый элемент в collection через iteratee. iteratee привязано к thisArg и вызывается с тремя аргументами: (значение, индекс|ключ, коллекция).
Если для iteratee указано имя свойства, созданная функция обратного вызова в стиле _.property возвращает значение свойства данного элемента.
Если для thisArg также указано значение, созданная функция обратного вызова в стиле _.matchesProperty возвращает true для элементов, имеющих соответствующее значение свойства, иначе false.
Если для iteratee указан объект, созданная функция обратного вызова в стиле _.matches возвращает true для элементов, имеющих свойства данного объекта, иначе false.
Многие методы lodash защищены, чтобы работать в качестве функций обратного вызова для методов, таких как _.every, _.filter, _.map, _.mapValues, _.reject и _.some.
Защищенные методы:ary, callback, chunk, clone, create, curry, curryRight, drop, dropRight, every, fill, flatten, invert, max, min, parseInt, slice, sortBy, take, takeRight, template, trim, trimLeft, trimRight, trunc, random, range, sample, some, sum, uniq, и words
Псевдонимы
_.collect
Аргументы
-
collection(Массив|Объект|строка): Коллекция для итерирования. -
[iteratee=_.identity](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Привязкаthisкiteratee.
Возвращаемое значение
(Массив): Возвращает новый массив с результатами.
Пример
function timesThree(n) {
return n * 3;
}
_.map([1, 2], timesThree);
// => [3, 6]
_.map({ 'a': 1, 'b': 2 }, timesThree);
// => [3, 6] (iteration order is not guaranteed)
var users = [
{ 'user': 'barney' },
{ 'user': 'fred' }
];
// using the `_.property` callback shorthand
_.map(users, 'user');
// => ['barney', 'fred']
_.partition(collection, [predicate=_.identity], [thisArg])
Создаёт массив элементов, разделенных на две группы. Первая группа содержит элементы, для которых predicate возвращает истинное значение, а вторая — элементы, для которых predicate возвращает ложное значение. Функция предикат привязана к thisArg и вызывается с тремя аргументами: (значение, индекс|ключ, коллекция).
Если для predicate указано имя свойства, созданная функция обратного вызова в стиле _.property возвращает значение свойства данного элемента.
Если для thisArg также указано значение, созданная функция обратного вызова в стиле _.matchesProperty возвращает true для элементов, имеющих соответствующее значение свойства, иначе false.
Если для predicate указан объект, созданная функция обратного вызова в стиле _.matches возвращает true для элементов, имеющих свойства данного объекта, иначе false.
Аргументы
-
collection(Массив|Объект|строка): Коллекция для итерирования. -
[predicate=_.identity](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Привязкаthisкpredicate.
Возвращаемое значение
(Массив): Возвращает массив с сгруппированными элементами.
Пример
_.partition([1, 2, 3], function(n) {
return n % 2;
});
// => [[1, 3], [2]]
_.partition([1.2, 2.3, 3.4], function(n) {
return this.floor(n) % 2;
}, Math);
// => [[1.2, 3.4], [2.3]]
var users = [
{ 'user': 'barney', 'age': 36, 'active': false },
{ 'user': 'fred', 'age': 40, 'active': true },
{ 'user': 'pebbles', 'age': 1, 'active': false }
];
var mapper = function(array) {
return _.pluck(array, 'user');
};
// using the `_.matches` callback shorthand
_.map(_.partition(users, { 'age': 1, 'active': false }), mapper);
// => [['pebbles'], ['barney', 'fred']]
// using the `_.matchesProperty` callback shorthand
_.map(_.partition(users, 'active', false), mapper);
// => [['barney', 'pebbles'], ['fred']]
// using the `_.property` callback shorthand
_.map(_.partition(users, 'active'), mapper);
// => [['fred'], ['barney', 'pebbles']]
_.pluck(collection, path)
Возвращает значение свойства path от всех элементов в collection.
Аргументы
-
collection(Массив|Объект|строка): Коллекция для итерирования. -
path(Массив|строка): Путь к свойству для извлечения.
Возвращаемое значение
(Массив): Возвращает значения свойств.
Пример
var users = [
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 }
];
_.pluck(users, 'user');
// => ['barney', 'fred']
var userIndex = _.indexBy(users, 'user');
_.pluck(userIndex, 'age');
// => [36, 40] (iteration order is not guaranteed)
_.reduce(collection, [iteratee=_.identity], [accumulator], [thisArg])
Сводит collection к значению, которое является накопленным результатом выполнения каждого элемента в collection через iteratee, где каждое последующее вызов получает возвращаемое значение предыдущего. Если accumulator не указан, используется первый элемент collection в качестве начального значения. iteratee привязан к thisArg и вызывается с четырьмя аргументами:
(аккумулятор, значение, индекс|ключ, коллекция).
Многие методы lodash защищены, чтобы работать в качестве функций обратного вызова для методов, таких как _.reduce, _.reduceRight и _.transform.
Защищенные методы:assign, defaults, defaultsDeep, includes, merge, sortByAll, и sortByOrder
Псевдонимы
_.foldl, _.inject
Аргументы
-
collection(Массив|Объект|строка): Коллекция для итерирования. -
[iteratee=_.identity](Функция): Функция, вызываемая на каждой итерации. -
[accumulator](*): Начальное значение. -
[thisArg](*): Привязкаthisкiteratee.
Возвращаемое значение
(*): Возвращает накопленное значение.
Пример
_.reduce([1, 2], function(total, n) {
return total + n;
});
// => 3
_.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) {
result[key] = n * 3;
return result;
}, {});
// => { 'a': 3, 'b': 6 } (iteration order is not guaranteed)
_.reduceRight(collection, [iteratee=_.identity], [accumulator], [thisArg])
Этот метод похож на _.reduce, за исключением того, что он итерирует элементы collection справа налево.
Псевдонимы
_.foldr
Аргументы
-
collection(Массив|Объект|строка): Коллекция для итерирования. -
[iteratee=_.identity](Функция): Функция, вызываемая на каждой итерации. -
[accumulator](*): Начальное значение. -
[thisArg](*): Привязкаthisкiteratee.
Возвращаемое значение
(*): Возвращает накопленное значение.
Пример
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], [thisArg])
Противоположность _.filter; этот метод возвращает элементы collection , для которых predicate не возвращает истинное значение.
Аргументы
-
collection(Массив|Объект|строка): Коллекция для итерирования. -
[predicate=_.identity](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Привязкаthisкpredicate.
Возвращаемое значение
(Массив): Возвращает новый отфильтрованный массив.
Пример
_.reject([1, 2, 3, 4], function(n) {
return n % 2 == 0;
});
// => [1, 3]
var users = [
{ 'user': 'barney', 'age': 36, 'active': false },
{ 'user': 'fred', 'age': 40, 'active': true }
];
// using the `_.matches` callback shorthand
_.pluck(_.reject(users, { 'age': 40, 'active': true }), 'user');
// => ['barney']
// using the `_.matchesProperty` callback shorthand
_.pluck(_.reject(users, 'active', false), 'user');
// => ['fred']
// using the `_.property` callback shorthand
_.pluck(_.reject(users, 'active'), 'user');
// => ['barney']
_.sample(collection, [n])
Получает случайный элемент или n случайных элементов из коллекции.
Аргументы
-
collection(Массив|Объект|строка): Коллекция для выборки. -
[n](число): Количество элементов для выборки.
Возвращаемое значение
(*): Возвращает случайную выборку(и).
Пример
_.sample([1, 2, 3, 4]); // => 2 _.sample([1, 2, 3, 4], 2); // => [3, 1]
_.shuffle(collection)
Создаёт массив перемешанных значений, используя алгоритм перемешивания Фишера-Йетса.
Аргументы
-
collection(Массив|Объект|строка): Коллекция для перемешивания.
Возвращаемое значение
(Массив): Возвращает новый перемешанный массив.
Пример
_.shuffle([1, 2, 3, 4]); // => [4, 1, 3, 2]
_.size(collection)
Получает размер collection , возвращая его длину для массивоподобных значений или количество собственных перечисляемых свойств для объектов.
Аргументы
-
collection(Массив|Объект|строка): Коллекция для проверки.
Возвращает
(число): Возвращает размер collection.
Пример
_.size([1, 2, 3]);
// => 3
_.size({ 'a': 1, 'b': 2 });
// => 2
_.size('pebbles');
// => 7
_.some(collection, [predicate=_.identity], [thisArg])
Проверяет, возвращает ли predicate истинное значение для любого элемента collection. Функция возвращает результат сразу после обнаружения подходящего значения и не итерирует по всей коллекции. Предикат привязан к thisArg и вызывается с тремя аргументами: (значение, индекс|ключ, коллекция).
Если для predicate указано имя свойства, созданный _.property стиль коллбека возвращает значение свойства данного элемента.
Если для thisArg также указано значение, созданный _.matchesProperty стиль коллбека возвращает true для элементов, имеющих соответствующее значение свойства, иначе false.
Если для predicate указан объект, созданный _.matches стиль коллбека возвращает true для элементов, имеющих свойства данного объекта, иначе false.
Псевдонимы
_.any
Аргументы
-
collection(Массив|Объект|строка): Коллекция для итерации. -
[predicate=_.identity](Функция|Объект|строка): Функция, вызываемая при каждой итерации. -
[thisArg](*): Связываниеthisдляpredicate.
Возвращает
(логическое значение): Возвращает true если какой-либо элемент проходит проверку предиката, иначе false.
Пример
_.some([null, 0, 'yes', false], Boolean);
// => true
var users = [
{ 'user': 'barney', 'active': true },
{ 'user': 'fred', 'active': false }
];
// using the `_.matches` callback shorthand
_.some(users, { 'user': 'barney', 'active': false });
// => false
// using the `_.matchesProperty` callback shorthand
_.some(users, 'active', false);
// => true
// using the `_.property` callback shorthand
_.some(users, 'active');
// => true
_.sortBy(collection, [iteratee=_.identity], [thisArg])
Создаёт массив элементов, отсортированных в порядке возрастания по результатам применения iteratee к каждому элементу коллекции. Этот метод выполняет стабильную сортировку, то есть сохраняет исходный порядок равных элементов. iteratee привязана к thisArg и вызывается с тремя аргументами:
(значение, индекс|ключ, коллекция).
Если для iteratee указано имя свойства, созданный _.property стиль коллбека возвращает значение свойства данного элемента.
Если для thisArg также указано значение, созданный _.matchesProperty стиль коллбека возвращает true для элементов, имеющих соответствующее значение свойства, иначе false.
Если для iteratee указан объект, созданный _.matches стиль коллбека возвращает true для элементов, имеющих свойства данного объекта, иначе false.
Аргументы
-
collection(Массив|Объект|строка): Коллекция для итерации. -
[iteratee=_.identity](Функция|Объект|строка): Функция, вызываемая при каждой итерации. -
[thisArg](*): Связываниеthisдляiteratee.
Возвращает
(Массив): Возвращает новый отсортированный массив.
Пример
_.sortBy([1, 2, 3], function(n) {
return Math.sin(n);
});
// => [3, 1, 2]
_.sortBy([1, 2, 3], function(n) {
return this.sin(n);
}, Math);
// => [3, 1, 2]
var users = [
{ 'user': 'fred' },
{ 'user': 'pebbles' },
{ 'user': 'barney' }
];
// using the `_.property` callback shorthand
_.pluck(_.sortBy(users, 'user'), 'user');
// => ['barney', 'fred', 'pebbles']
_.sortByAll(collection, iteratees)
Этот метод похож на _.sortBy, за исключением того, что он может сортировать по нескольким итераторам или именам свойств.
Если для итератора указано имя свойства, созданный _.property стиль коллбека возвращает значение свойства данного элемента.
Если для итератора указан объект, созданный _.matches стиль коллбека возвращает true для элементов, имеющих свойства данного объекта, иначе false.
Аргументы
-
collection(Массив|Объект|строка): Коллекция для итерации. -
iteratees(...(Функция|Массив функций|Объект|Массив объектов|строка|Массив строк)): Итераторы для сортировки, указанные как отдельные значения или массивы значений.
Возвращает
(Массив): Возвращает новый отсортированный массив.
Пример
var users = [
{ 'user': 'fred', 'age': 48 },
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 42 },
{ 'user': 'barney', 'age': 34 }
];
_.map(_.sortByAll(users, ['user', 'age']), _.values);
// => [['barney', 34], ['barney', 36], ['fred', 42], ['fred', 48]]
_.map(_.sortByAll(users, 'user', function(chr) {
return Math.floor(chr.age / 10);
}), _.values);
// => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]
_.sortByOrder(collection, iteratees, [orders])
Этот метод похож на _.sortByAll, за исключением того, что он позволяет указать порядок сортировки для итераторов. Если orders не указан, все значения сортируются в порядке возрастания. В противном случае значение сортируется в порядке возрастания, если соответствующий порядок равен "asc", и в порядке убывания, если "desc".
Если для итератора указано имя свойства, созданный _.property стиль коллбека возвращает значение свойства данного элемента.
Если для итератора указан объект, созданный _.matches стиль коллбека возвращает true для элементов, имеющих свойства данного объекта, иначе false.
Аргументы
-
collection(Массив|Объект|строка): Коллекция для итерации. -
iteratees(Массив функций|Массив объектов|Массив строк): Итераторы для сортировки. -
[orders](Массив логических значений): Порядок сортировкиiteratees.
Возвращает
(Массив): Возвращает новый отсортированный массив.
Пример
var users = [
{ 'user': 'fred', 'age': 48 },
{ 'user': 'barney', 'age': 34 },
{ 'user': 'fred', 'age': 42 },
{ 'user': 'barney', 'age': 36 }
];
// sort by `user` in ascending order and by `age` in descending order
_.map(_.sortByOrder(users, ['user', 'age'], ['asc', 'desc']), _.values);
// => [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 42]]
_.where(collection, source)
Выполняет глубокое сравнение каждого элемента collection с объектом source, возвращая массив всех элементов, имеющих эквивалентные значения свойств.
Примечание: Этот метод поддерживает сравнение массивов, булевых значений, Date объектов, чисел, Object объектов, регулярных выражений и строк. Объекты сравниваются по своим собственным, а не унаследованным, перечисляемым свойствам. Для сравнения значения только собственного или унаследованного свойства см. _.matchesProperty.
Аргументы
-
collection(Массив|Объект|строка): Коллекция для поиска. -
source(Объект): Объект значений свойств для соответствия.
Возвращает
(Массив): Возвращает новый отфильтрованный массив.
Пример
var users = [
{ 'user': 'barney', 'age': 36, 'active': false, 'pets': ['hoppy'] },
{ 'user': 'fred', 'age': 40, 'active': true, 'pets': ['baby puss', 'dino'] }
];
_.pluck(_.where(users, { 'age': 36, 'active': false }), 'user');
// => ['barney']
_.pluck(_.where(users, { 'pets': ['dino'] }), 'user');
// => ['fred']
Методы “Дата”
_.now
Получает количество миллисекунд, прошедших с эпохи Unix (1 января 1970 00:00:00 по UTC).
Пример
_.defer(function(stamp) {
console.log(_.now() - stamp);
}, _.now());
// => logs the number of milliseconds it took for the deferred function to be invoked
Методы “Функция”
_.after(n, func)
Обратный метод _.before; этот метод создаёт функцию, которая вызывает func только после того, как её вызовут n или более раз.
Аргументы
-
n(число): Количество вызовов до вызоваfunc. -
func(Функция): Функция, которую необходимо ограничить.
Возвращает
(Функция): Возвращает новую ограниченную функцию.
Пример
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])
Создаёт функцию, принимающую не более n аргументов, игнорируя любые дополнительные.
Аргументы
-
func(Функция): Функция, для которой необходимо ограничить аргументы. -
[n=func.length](число): Ограничение арности.
Возвращает
(Функция): Возвращает новую функцию.
Пример
_.map(['6', '8', '10'], _.ary(parseInt, 1)); // => [6, 8, 10]
_.before(n, func)
Создаёт функцию, которая вызывает func, с привязкой this и аргументами созданной функции, пока её вызывают меньше n раз. Последующие вызовы созданной функции возвращают результат последнего вызова func.
Аргументы
-
n(число): Количество вызовов, после которогоfuncбольше не вызывается. -
func(Функция): Функция, которую необходимо ограничить.
Возвращает
(Функция): Возвращает новую ограниченную функцию.
Пример
jQuery('#add').on('click', _.before(5, addContactToList));
// => allows adding up to 4 contacts to the list
_.bind(func, thisArg, [partials])
Создаёт функцию, которая вызывает func с привязкой this для thisArg и добавляет любые дополнительные _.bind аргументы перед теми, которые предоставляются связанной функции.
Значение _.bind.placeholder, которое по умолчанию равно _ в монолитных сборках, может использоваться в качестве заполнитель для частично применённых аргументов.
Примечание: В отличие от родного Function#bind этот метод не устанавливает свойство "length" связанных функций.
Аргументы
-
func(Функция): Функция, которую необходимо привязать. -
thisArg(*): Связываниеthisдляfunc. -
[partials](...*): Аргументы, которые необходимо частично применить.
Возвращает
(Функция): Возвращает новую связанную функцию.
Пример
var greet = function(greeting, punctuation) {
return greeting + ' ' + this.user + punctuation;
};
var object = { 'user': 'fred' };
var bound = _.bind(greet, object, 'hi');
bound('!');
// => 'hi fred!'
// using placeholders
var bound = _.bind(greet, object, _, '!');
bound('hi');
// => 'hi fred!'
_.bindAll(object, [methodNames])
Связывает методы объекта с самим объектом, перезаписывая существующий метод. Имена методов могут быть указаны как отдельные аргументы или как массивы имён методов. Если имена методов не указаны, все перечисляемые свойства-функции, собственные и унаследованные, объекта object связываются.
Примечание: Этот метод не устанавливает свойство "length" связанных функций.
Аргументы
-
object(Объект): Объект, к которому нужно привязать и назначить связанные методы. -
[methodNames](...(строка|массив строк)): Имена методов объекта для привязки, указанные как отдельные имена методов или массивы имён методов.
Возвращаемое значение
(Объект): Возвращает object.
Пример
var view = {
'label': 'docs',
'onClick': function() {
console.log('clicked ' + this.label);
}
};
_.bindAll(view);
jQuery('#docs').on('click', view.onClick);
// => logs 'clicked docs' when the element is clicked
_.bindKey(object, key, [partials])
Создаёт функцию, которая вызывает метод по ключу object[key] и добавляет любые дополнительные _.bindKey аргументы перед аргументами, предоставленными связанной функции.
Этот метод отличается от _.bind тем, что позволяет связанным функциям ссылаться на методы, которые могут быть переопределены или ещё не существуют. См. статью Питера Мишо для получения дополнительной информации.
Значение _.bindKey.placeholder, которое по умолчанию равно _ в монолитных сборках, может быть использовано в качестве заглушки для частично применённых аргументов.
Аргументы
-
object(Объект): Объект, которому принадлежит метод. -
key(строка): Ключ метода. -
[partials](...*): Аргументы, которые должны быть частично применены.
Возвращаемое значение
(Функция): Возвращает новую связанную функцию.
Пример
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!'
// using placeholders
var bound = _.bindKey(object, 'greet', _, '!');
bound('hi');
// => 'hiya fred!'
_.curry(func, [arity=func.length])
Создаёт функцию, которая принимает один или несколько аргументов func, которая при вызове либо вызывает func и возвращает её результат, если все func аргументы были предоставлены, либо возвращает функцию, которая принимает один или несколько оставшихся func аргументов, и так далее. Арность func может быть указана, если func.length недостаточно.
Значение _.curry.placeholder, которое по умолчанию равно _ в монолитных сборках, может быть использовано в качестве заглушки для предоставленных аргументов.
Примечание: Этот метод не устанавливает свойство "length" для функций с применением.
Аргументы
-
func(Функция): Функция для применения. -
[arity=func.length](число): Арностьfunc.
Возвращаемое значение
(Функция): Возвращает новую функцию с применением.
Пример
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]
// using placeholders
curried(1)(_, 3)(2);
// => [1, 2, 3]
_.curryRight(func, [arity=func.length])
Этот метод похож на _.curry, за исключением того, что аргументы применяются к func таким образом, как в _.partialRight, а не в _.partial.
Значение _.curryRight.placeholder, которое по умолчанию равно _ в монолитных сборках, может быть использовано в качестве заглушки для предоставленных аргументов.
Примечание: Этот метод не устанавливает свойство "length" для функций с применением.
Аргументы
-
func(Функция): Функция для применения. -
[arity=func.length](число): Арностьfunc.
Возвращаемое значение
(Функция): Возвращает новую функцию с применением.
Пример
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]
// using placeholders
curried(3)(1, _)(2);
// => [1, 2, 3]
_.debounce(func, [wait=0], [options])
Создаёт отложенную функцию, которая откладывает вызов func до истечения wait миллисекунд с момента последнего вызова отложенной функции. Отложенная функция имеет метод cancel для отмены отложенных вызовов. Укажите объект options, чтобы указать, что func должен быть вызван на ведущем и/или завершающем крае wait тайм-аута. Последующие вызовы отложенной функции возвращают результат последнего вызова func.
Примечание: Если
leading и trailing опции true, func вызывается только на завершающем крае тайм-аута, если отложенная функция вызывается более одного раза во время wait тайм-аута.См. статью Дэвида Корбахо для получения подробностей о различиях между
_.debounce и _.throttle.Аргументы
-
func(Функция): Функция для откладывания. -
[wait=0](число): Количество миллисекунд для задержки. -
[options](Объект): Объект опций. -
[options.leading=false](логическое значение): Укажите вызов на ведущем краю тайм-аута. -
[options.maxWait](число): Максимальное время, в течение которогоfuncможет быть отложено до вызова. -
[options.trailing=true](логическое значение): Укажите вызов на завершающем краю тайм-аута.
Возвращаемое значение
(Функция): Возвращает новую отложенную функцию.
Пример
// avoid costly calculations while the window size is in flux
jQuery(window).on('resize', _.debounce(calculateLayout, 150));
// invoke `sendMail` when the click event is fired, debouncing subsequent calls
jQuery('#postbox').on('click', _.debounce(sendMail, 300, {
'leading': true,
'trailing': false
}));
// ensure `batchLog` is invoked once after 1 second of debounced calls
var source = new EventSource('/stream');
jQuery(source).on('message', _.debounce(batchLog, 250, {
'maxWait': 1000
}));
// cancel a debounced call
var todoChanges = _.debounce(batchLog, 1000);
Object.observe(models.todo, todoChanges);
Object.observe(models, function(changes) {
if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {
todoChanges.cancel();
}
}, ['delete']);
// ...at some point `models.todo` is changed
models.todo.completed = true;
// ...before 1 second has passed `models.todo` is deleted
// which cancels the debounced `todoChanges` call
delete models.todo;
_.defer(func, [args])
Откладывает вызов func до тех пор, пока текущая стека вызовов не очистится. Любые дополнительные аргументы предоставляются функции func при её вызове.
Аргументы
-
func(Функция): Функция для откладывания. -
[args](...*): Аргументы для вызова функции.
Возвращаемое значение
(число): Возвращает идентификатор таймера.
Пример
_.defer(function(text) {
console.log(text);
}, 'deferred');
// logs 'deferred' after one or more milliseconds
_.delay(func, wait, [args])
Вызывает func через wait миллисекунд. Любые дополнительные аргументы предоставляются функции func при её вызове.
Аргументы
-
func(Функция): Функция для откладывания. -
wait(число): Количество миллисекунд для задержки вызова. -
[args](...*): Аргументы для вызова функции.
Возвращаемое значение
(число): Возвращает идентификатор таймера.
Пример
_.delay(function(text) {
console.log(text);
}, 1000, 'later');
// => logs 'later' after one second
_.flow([funcs])
Создаёт функцию, которая возвращает результат вызова предоставленных функций с this связью созданной функции, где каждый последующий вызов получает значение возвращаемое предыдущим.
Аргументы
-
[funcs](...Функция): Функции для вызова.
Возвращаемое значение
(Функция): Возвращает новую функцию.
Пример
function square(n) {
return n * n;
}
var addSquare = _.flow(_.add, square);
addSquare(1, 2);
// => 9
_.flowRight([funcs])
Этот метод похож на _.flow, за исключением того, что он создаёт функцию, которая вызывает предоставленные функции справа налево.
Псевдонимы
_.backflow, _.compose
Аргументы
-
[funcs](...Функция): Функции для вызова.
Возвращаемое значение
(Функция): Возвращает новую функцию.
Пример
function square(n) {
return n * n;
}
var addSquare = _.flowRight(square, _.add);
addSquare(1, 2);
// => 9
_.memoize(func, [resolver])
Создаёт функцию, которая запоминает результат func. Если resolver указана, она определяет ключ кэша для хранения результата на основе аргументов, предоставленных запоминающей функции. По умолчанию первый аргумент, предоставленный запоминающей функции, приводится к строке и используется в качестве ключа кэша. func вызывается с this связью запоминающей функции.
Примечание: Кэш доступен как свойство cache запоминающей функции. Его создание может быть настраиваемо путём замены конструктора _.memoize.Cache на конструктор, экземпляры которого реализуют интерфейс метода Map интерфейса get, has, и set.
Аргументы
-
func(Функция): Функция, результат которой нужно запоминать. -
[resolver](Функция): Функция для определения ключа кэша.
Возвращаемое значение
(Функция): Возвращает новую функцию запоминания.
Пример
var upperCase = _.memoize(function(string) {
return string.toUpperCase();
});
upperCase('fred');
// => 'FRED'
// modifying the result cache
upperCase.cache.set('fred', 'BARNEY');
upperCase('fred');
// => 'BARNEY'
// replacing `_.memoize.Cache`
var object = { 'user': 'fred' };
var other = { 'user': 'barney' };
var identity = _.memoize(_.identity);
identity(object);
// => { 'user': 'fred' }
identity(other);
// => { 'user': 'fred' }
_.memoize.Cache = WeakMap;
var identity = _.memoize(_.identity);
identity(object);
// => { 'user': 'fred' }
identity(other);
// => { 'user': 'barney' }
_.modArgs(func, [transforms])
Создаёт функцию, которая запускает каждый аргумент через соответствующую функцию преобразования.
Аргументы
-
func(Функция): Функция, которую нужно обернуть. -
[transforms](...(Функция|Массив функций)): Функции для преобразования аргументов, указанные как отдельные функции или массивы функций.
Возвращает
(Функция): Возвращает новую функцию.
Пример
function doubled(n) {
return n * 2;
}
function square(n) {
return n * n;
}
var modded = _.modArgs(function(x, y) {
return [x, y];
}, square, doubled);
modded(1, 2);
// => [1, 4]
modded(5, 10);
// => [25, 20]
_.negate(predicate)
Создаёт функцию, которая инвертирует результат предиката func. Предикат func вызывается с контекстом this и аргументами созданной функции.
Аргументы
-
predicate(Функция): Предикат, который нужно инвертировать.
Возвращает
(Функция): Возвращает новую функцию.
Пример
function isEven(n) {
return n % 2 == 0;
}
_.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
// => [1, 3, 5]
_.once(func)
Создаёт функцию, которая ограничена вызовом func один раз. Повторные вызовы функции возвращают значение первого вызова. Функция func вызывается с контекстом this и аргументами созданной функции.
Аргументы
-
func(Функция): Функция, которую нужно ограничить.
Возвращает
(Функция): Возвращает новую ограниченную функцию.
Пример
var initialize = _.once(createApplication); initialize(); initialize(); // `initialize` invokes `createApplication` once
_.partial(func, [partials])
Создаёт функцию, которая вызывает func с partial аргументами, добавленными перед теми, которые переданы новой функции. Этот метод похож на _.bind, за исключением того, что он не изменяет this контекст.
Значение _.partial.placeholder, по умолчанию _ в монолитных сборках, может использоваться в качестве местазаполнителя для частично применённых аргументов.
Примечание: Этот метод не устанавливает свойство «length» частично применённых функций.
Аргументы
-
func(Функция): Функция, к которой частично применяются аргументы. -
[partials](...*): Аргументы, которые будут частично применены.
Возвращает
(Функция): Возвращает новую частично применённую функцию.
Пример
var greet = function(greeting, name) {
return greeting + ' ' + name;
};
var sayHelloTo = _.partial(greet, 'hello');
sayHelloTo('fred');
// => 'hello fred'
// using placeholders
var greetFred = _.partial(greet, _, 'fred');
greetFred('hi');
// => 'hi fred'
_.partialRight(func, [partials])
Этот метод похож на _.partial, за исключением того, что частично применённые аргументы добавляются к тем, которые переданы новой функции.
Значение _.partialRight.placeholder, по умолчанию _ в монолитных сборках, может использоваться в качестве местазаполнителя для частично применённых аргументов.
Примечание: Этот метод не устанавливает свойство «length» частично применённых функций.
Аргументы
-
func(Функция): Функция, к которой частично применяются аргументы. -
[partials](...*): Аргументы, которые будут частично применены.
Возвращает
(Функция): Возвращает новую частично применённую функцию.
Пример
var greet = function(greeting, name) {
return greeting + ' ' + name;
};
var greetFred = _.partialRight(greet, 'fred');
greetFred('hi');
// => 'hi fred'
// using placeholders
var sayHelloTo = _.partialRight(greet, 'hello', _);
sayHelloTo('fred');
// => 'hello fred'
_.rearg(func, indexes)
Создаёт функцию, которая вызывает func с аргументами, переставленными в соответствии с указанными индексами. Значение аргумента в первом индексе предоставляется в качестве первого аргумента, значение аргумента во втором индексе предоставляется в качестве второго аргумента и так далее.
Аргументы
-
func(Функция): Функция, для которой нужно переставить аргументы. -
indexes(...(число|Массив чисел)): Индексы аргументов, переставленные в виде отдельных индексов или массивов индексов.
Возвращает
(Функция): Возвращает новую функцию.
Пример
var rearged = _.rearg(function(a, b, c) {
return [a, b, c];
}, 2, 0, 1);
rearged('b', 'c', 'a')
// => ['a', 'b', 'c']
var map = _.rearg(_.map, [1, 0]);
map(function(n) {
return n * 3;
}, [1, 2, 3]);
// => [3, 6, 9]
_.restParam(func, [start=func.length-1])
Создаёт функцию, которая вызывает func с контекстом this созданной функции и аргументами с start и далее в виде массива.
Примечание: Этот метод основан на rest параметрах.
Аргументы
-
func(Функция): Функция, к которой нужно применить rest параметр. -
[start=func.length-1](число): Начальная позиция rest параметра.
Возвращает
(Функция): Возвращает новую функцию.
Пример
var say = _.restParam(function(what, names) {
return what + ' ' + _.initial(names).join(', ') +
(_.size(names) > 1 ? ', & ' : '') + _.last(names);
});
say('hello', 'fred', 'barney', 'pebbles');
// => 'hello fred, barney, & pebbles'
_.spread(func)
Создаёт функцию, которая вызывает func с контекстом this созданной функции и массивом аргументов, аналогично Function#apply.
Примечание: Этот метод основан на операторе spread.
Аргументы
-
func(Функция): Функция, для которой нужно распределить аргументы.
Возвращает
(Функция): Возвращает новую функцию.
Пример
var say = _.spread(function(who, what) {
return who + ' says ' + what;
});
say(['fred', 'hello']);
// => 'fred says hello'
// with a Promise
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])
Создаёт ограниченную по частоте функцию, которая вызывает func не более одного раза в каждые wait миллисекунд. Ограниченная функция имеет метод cancel для отмены отложенных вызовов. Используйте объект options, чтобы указать, что func должен вызываться в начале и/или конце wait тайм-аута. Последующие вызовы ограниченной функции возвращают результат последнего вызова func.
Примечание: Если leading и trailing опции равны true, func вызывается только по окончании тайм-аута, если ограниченная функция вызывается более одного раза во время wait тайм-аута.
См. статью Дэвида Корбахо для получения подробной информации о различиях между _.throttle и _.debounce.
Аргументы
-
func(Функция): Функция, которую нужно ограничить по частоте. -
[wait=0](число): Количество миллисекунд для ограничения вызовов. -
[options](Объект): Объект опций. -
[options.leading=true](логическое значение): Указать вызов в начале тайм-аута. -
[options.trailing=true](логическое значение): Указать вызов в конце тайм-аута.
Возвращает
(Функция): Возвращает новую ограниченную по частоте функцию.
Пример
// 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
jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {
'trailing': false
}));
// cancel a trailing throttled call
jQuery(window).on('popstate', throttled.cancel);
_.wrap(value, wrapper)
Создаёт функцию, которая предоставляет value обертывающей функции в качестве первого аргумента. Любые дополнительные аргументы, переданные функции, добавляются к тем, которые переданы обертывающей функции. Обёртка вызывается с контекстом this созданной функции.
Аргументы
-
value(*): Значение, которое нужно обернуть. -
wrapper(Функция): Функция-обёртка.
Возвращает
(Функция): Возвращает новую функцию.
Пример
var p = _.wrap(_.escape, function(func, text) {
return '<p>' + func(text) + '</p>';
});
p('fred, barney, & pebbles');
// => '<p>fred, barney, &amp; pebbles</p>'
Методы «Lang»
_.clone(value, [isDeep], [customizer], [thisArg])
Создаёт копию value. Если isDeep имеет значение true, вложенные объекты клонируются, в противном случае они присваиваются по ссылке. Если customizer указан, он вызывается для создания клонированных значений. Если customizer возвращает undefined, метод обрабатывает клонирование самостоятельно. customizer привязан к thisArg и вызывается с максимум тремя аргументами; (значение [, индекс|ключ, объект]).
Примечание: Этот метод в общих чертах основан на алгоритме структурированного клонирования. Перечисляемые свойства объектов arguments и объектов, созданных конструкторами, отличными от Object, клонируются в обычные объекты Object. Для неклонируемых значений, таких как функции, узлы DOM, Map, Set и WeakMap, возвращается пустой объект.
Аргументы
-
value(*): Значение, которое нужно скопировать. -
[isDeep](логическое значение): Указать глубокое клонирование. -
[customizer](Функция): Функция для настройки клонирования значений. -
[thisArg](*): Контекстthisдляcustomizer.
Возвращает
(*): Возвращает скопированное значение.
Пример
var users = [
{ 'user': 'barney' },
{ 'user': 'fred' }
];
var shallow = _.clone(users);
shallow[0] === users[0];
// => true
var deep = _.clone(users, true);
deep[0] === users[0];
// => false
// using a customizer callback
var el = _.clone(document.body, function(value) {
if (_.isElement(value)) {
return value.cloneNode(false);
}
});
el === document.body
// => false
el.nodeName
// => BODY
el.childNodes.length;
// => 0
_.cloneDeep(value, [customizer], [thisArg])
Создаёт глубокую копию value. Если предоставлен customizer, он вызывается для создания скопированных значений. Если customizer возвращает undefined, клонирование обрабатывается этим методом. customizer привязан к thisArg и вызывается с до трёх аргументов; (значение [, индекс|ключ, объект]).
Примечание: Этот метод основан на алгоритме структурированного клонирования structured clone algorithm. Перечисляемые свойства объектов arguments и объектов, созданных конструкторами, отличными от Object, клонируются в простые объекты Object. Для неклонируемых значений, таких как функции, узлы DOM, карты, множества и слабые карты, возвращается пустой объект.
Аргументы
-
value(*): Значение для глубокого клонирования. -
[customizer](Функция): Функция для настройки клонирования значений. -
[thisArg](*): Связываниеthisдляcustomizer.
Возвращаемое значение
(*): Возвращает глубоко скопированное значение.
Пример
var users = [
{ 'user': 'barney' },
{ 'user': 'fred' }
];
var deep = _.cloneDeep(users);
deep[0] === users[0];
// => false
// using a customizer callback
var el = _.cloneDeep(document.body, function(value) {
if (_.isElement(value)) {
return value.cloneNode(true);
}
});
el === document.body
// => false
el.nodeName
// => BODY
el.childNodes.length;
// => 20
_.gt(value, other)
Проверяет, больше ли value, чем other.
Аргументы
-
value(*): Значение для сравнения. -
other(*): Другое значение для сравнения.
Возвращаемое значение
(boolean): Возвращает true, если value больше, чем other, иначе false.
Пример
_.gt(3, 1); // => true _.gt(3, 3); // => false _.gt(1, 3); // => false
_.gte(value, other)
Проверяет, больше или равно ли value other.
Аргументы
-
value(*): Значение для сравнения. -
other(*): Другое значение для сравнения.
Возвращаемое значение
(boolean): Возвращает true, если value больше или равно other, иначе false.
Пример
_.gte(3, 1); // => true _.gte(3, 3); // => true _.gte(1, 3); // => false
_.isArguments(value)
Проверяет, является ли value объектом типа arguments.
Аргументы
-
value(*): Значение для проверки.
Возвращаемое значение
(boolean): Возвращает true, если value правильно классифицирован, иначе false.
Пример
_.isArguments(function() { return arguments; }());
// => true
_.isArguments([1, 2, 3]);
// => false
_.isArray(value)
Проверяет, является ли value объектом типа Array.
Аргументы
-
value(*): Значение для проверки.
Возвращаемое значение
(boolean): Возвращает true, если value правильно классифицирован, иначе false.
Пример
_.isArray([1, 2, 3]);
// => true
_.isArray(function() { return arguments; }());
// => false
_.isBoolean(value)
Проверяет, является ли value булевым значением (примитивом или объектом).
Аргументы
-
value(*): Значение для проверки.
Возвращаемое значение
(boolean): Возвращает true, если value правильно классифицирован, иначе false.
Пример
_.isBoolean(false); // => true _.isBoolean(null); // => false
_.isDate(value)
Проверяет, является ли value объектом типа Date.
Аргументы
-
value(*): Значение для проверки.
Возвращаемое значение
(boolean): Возвращает true, если value правильно классифицирован, иначе false.
Пример
_.isDate(new Date);
// => true
_.isDate('Mon April 23 2012');
// => false
_.isElement(value)
Проверяет, является ли value элементом DOM.
Аргументы
-
value(*): Значение для проверки.
Возвращаемое значение
(boolean): Возвращает true если value является элементом DOM, иначе false.
Пример
_.isElement(document.body);
// => true
_.isElement('<body>');
// => false
_.isEmpty(value)
Проверяет, является ли value пустым. Значение считается пустым, если это не arguments объект, массив, строка или коллекция, подобная jQuery, с длиной больше 0, или объект с собственными перечисляемыми свойствами.
Аргументы
-
value(Array|Object|string): Значение для проверки.
Возвращаемое значение
(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, [customizer], [thisArg])
Производит глубокое сравнение двух значений, чтобы определить, эквивалентны ли они. Если customizer предоставлен, он вызывается для сравнения значений. Если customizer возвращает undefined, сравнения обрабатываются методом вместо этого. customizer привязан к thisArg и вызывается с максимум тремя аргументами: (value, other [, index|key]).
Примечание: Этот метод поддерживает сравнение массивов, булевых значений, Date объектов, чисел, Object объектов, регулярных выражений и строк. Объекты сравниваются по своим собственным, а не унаследованным, перечисляемым свойствам. Функции и узлы DOM не поддерживаются. Для расширения поддержки сравнения других значений используйте функцию-кастомайзер.
Псевдонимы
_.eq
Аргументы
-
value(*): Значение для сравнения. -
other(*): Другое значение для сравнения. -
[customizer](Function): Функция для настройки сравнения значений. -
[thisArg](*): Связывание контекста вызоваcustomizer.
Возвращаемое значение
(boolean): Возвращает true если значения эквивалентны, иначе false.
Пример
var object = { 'user': 'fred' };
var other = { 'user': 'fred' };
object == other;
// => false
_.isEqual(object, other);
// => true
// using a customizer callback
var array = ['hello', 'goodbye'];
var other = ['hi', 'goodbye'];
_.isEqual(array, other, function(value, other) {
if (_.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/)) {
return true;
}
});
// => true
_.isError(value)
Проверяет, является ли value объектом Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError, или URIError.
Аргументы
-
value(*): Значение для проверки.
Возвращаемое значение
(boolean): Возвращает true если value является объектом ошибки, иначе false.
Пример
_.isError(new Error); // => true _.isError(Error); // => false
_.isFinite(value)
Проверяет, является ли value конечным примитивным числом.
Примечание: Этот метод основан на Number.isFinite.
Аргументы
-
value(*): Значение для проверки.
Возвращаемое значение
(boolean): Возвращает true если value является конечным числом, иначе false.
Пример
_.isFinite(10);
// => true
_.isFinite('10');
// => false
_.isFinite(true);
// => false
_.isFinite(Object(10));
// => false
_.isFinite(Infinity);
// => false
_.isFunction(value)
Проверяет, классифицируется ли value как объект Function.
Аргументы
-
value(*): Значение для проверки.
Возвращаемое значение
(boolean): Возвращает true если value правильно классифицирован, иначе false.
Пример
_.isFunction(_); // => true _.isFunction(/abc/); // => false
_.isMatch(object, source, [customizer], [thisArg])
Выполняет глубокое сравнение между object и source для определения, содержит ли object эквивалентные значения свойств. Если customizer предоставлен, он вызывается для сравнения значений. Если customizer возвращает undefined, сравнения обрабатываются методом вместо этого. customizer привязан к thisArg и вызывается с тремя аргументами: (value, other, index|key).
Примечание: Этот метод поддерживает сравнение свойств массивов, булевых значений, Date объектов, чисел, Object объектов, регулярных выражений и строк. Функции и узлы DOM не поддерживаются. Для расширения поддержки сравнения других значений используйте функцию-кастомайзер.
Аргументы
-
object(Объект): Объект для проверки. -
source(Объект): Объект значений свойств для сопоставления. -
[customizer](Функция): Функция для настройки сравнения значений. -
[thisArg](*): Связываниеthisдляcustomizer.
Возвращает
(boolean): Возвращает true если object соответствует, иначе false.
Пример
var object = { 'user': 'fred', 'age': 40 };
_.isMatch(object, { 'age': 40 });
// => true
_.isMatch(object, { 'age': 36 });
// => false
// using a customizer callback
var object = { 'greeting': 'hello' };
var source = { 'greeting': 'hi' };
_.isMatch(object, source, function(value, other) {
return _.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/) || undefined;
});
// => true
_.isNaN(value)
Проверяет, является ли value NaN.
Примечание: Этот метод отличается от isNaN, который возвращает true для undefined и других нечисловых значений.
Аргументы
-
value(*): Значение для проверки.
Возвращает
(boolean): Возвращает true если value является NaN, иначе false.
Пример
_.isNaN(NaN); // => true _.isNaN(new Number(NaN)); // => true isNaN(undefined); // => true _.isNaN(undefined); // => false
_.isNative(value)
Проверяет, является ли value встроенной функцией.
Аргументы
-
value(*): Значение для проверки.
Возвращает
(boolean): Возвращает true если value является встроенной функцией, иначе false.
Пример
_.isNative(Array.prototype.push); // => true _.isNative(_); // => false
_.isNull(value)
Проверяет, является ли value null.
Аргументы
-
value(*): Значение для проверки.
Возвращает
(boolean): Возвращает true если value является null, иначе false.
Пример
_.isNull(null); // => true _.isNull(void 0); // => false
_.isNumber(value)
Проверяет, является ли value примитивом типа Number или объектом.
Примечание: Чтобы исключить Infinity, -Infinity, и NaN, которые классифицируются как числа, используйте метод _.isFinite.
Аргументы
-
value(*): Значение для проверки.
Возвращает
(boolean): Возвращает true если value правильно классифицировано, иначе false.
Пример
_.isNumber(8.4);
// => true
_.isNumber(NaN);
// => true
_.isNumber('8.4');
// => false
_.isObject(value)
Проверяет, является ли value типом Object. (например, массивы, функции, объекты, регулярные выражения, new Number(0), и new String('')).
Аргументы
-
value(*): Значение для проверки.
Возвращает
(boolean): Возвращает true если value является объектом, иначе false.
Пример
_.isObject({});
// => true
_.isObject([1, 2, 3]);
// => true
_.isObject(1);
// => false
_.isPlainObject(value)
Проверяет, является ли value обычным объектом, то есть объектом, созданным с помощью конструктора Object или с [[Prototype]] типом null.
Примечание: Этот метод предполагает, что объекты, созданные с помощью конструктора Object, не имеют унаследованных перечисляемых свойств.
Аргументы
-
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.
Аргументы
-
value(*): Значение для проверки.
Возвращает
(boolean): Возвращает true если value правильно классифицировано, иначе false.
Пример
_.isRegExp(/abc/);
// => true
_.isRegExp('/abc/');
// => false
_.isString(value)
Проверяет, является ли value примитивом или объектом типа String.
Аргументы
-
value(*): Значение для проверки.
Возвращает
(boolean): Возвращает true если value правильно классифицировано, иначе false.
Пример
_.isString('abc');
// => true
_.isString(1);
// => false
_.isTypedArray(value)
Проверяет, является ли value массивом типизированных данных.
Аргументы
-
value(*): Значение для проверки.
Возвращает
(boolean): Возвращает true если value правильно классифицировано, иначе false.
Пример
_.isTypedArray(new Uint8Array); // => true _.isTypedArray([]); // => false
_.isUndefined(value)
Проверяет, является ли value undefined.
Аргументы
-
value(*): Значение для проверки.
Возвращает
(boolean): Возвращает true если value является undefined, иначе false.
Пример
_.isUndefined(void 0); // => true _.isUndefined(null); // => false
_.lt(value, other)
Проверяет, меньше ли value чем other.
Аргументы
-
value(*): Значение для сравнения. -
other(*): Другое значение для сравнения.
Возвращает
(boolean): Возвращает true если value меньше чем other, иначе false.
Пример
_.lt(1, 3); // => true _.lt(3, 3); // => false _.lt(3, 1); // => false
_.lte(value, other)
Проверяет, меньше или равно ли value other.
Аргументы
-
value(*): Значение для сравнения. -
other(*): Другое значение для сравнения.
Возвращает
(boolean): Возвращает true если value меньше или равно other, иначе false.
Пример
_.lte(1, 3); // => true _.lte(3, 3); // => true _.lte(3, 1); // => false
_.toArray(value)
Преобразует value в массив.
Аргументы
-
value(*): Значение для преобразования.
Возвращает
(Массив): Возвращает преобразованный массив.
Пример
(function() {
return _.toArray(arguments).slice(1);
}(1, 2, 3));
// => [2, 3]
_.toPlainObject(value)
Преобразует value в обычный объект, уплощая унаследованные перечисляемые свойства value в собственные свойства обычного объекта.
Аргументы
-
value(*): Значение для преобразования.
Возвращает
(Объект): Возвращает преобразованный обычный объект.
Пример
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 }
Методы “Math”
_.add(augend, addend)
Складывает два числа.
Аргументы
-
augend(число): Первое слагаемое. -
addend(число): Второе слагаемое.
Возвращает
(число): Возвращает сумму.
Пример
_.add(6, 4); // => 10
_.ceil(n, [precision=0])
Вычисляет n, округляя вверх до precision.
Аргументы
-
n(число): Число для округления вверх. -
[precision=0](число): Точность округления вверх.
Возвращает
(число): Возвращает округлённое вверх число.
Пример
_.ceil(4.006); // => 5 _.ceil(6.004, 2); // => 6.01 _.ceil(6040, -2); // => 6100
_.floor(n, [precision=0])
Вычисляет n, округляя вниз до precision.
Аргументы
-
n(число): Число, которое нужно округлить вниз. -
[precision=0](число): Точность округления вниз.
Возвращаемое значение
(число): Возвращает округлённое вниз число.
Пример
_.floor(4.006); // => 4 _.floor(0.046, 2); // => 0.04 _.floor(4060, -2); // => 4000
_.max(collection, [iteratee], [thisArg])
Возвращает максимальное значение из collection. Если collection пустое или ложное -Infinity возвращается. Если предоставлена функция iteratee, она вызывается для каждого значения в collection, чтобы сгенерировать критерий ранжирования. Функция iteratee привязана к thisArg и вызывается с тремя аргументами: (значение, индекс, коллекция).
Если для iteratee указано имя свойства, созданная функция обратного вызова типа _.property возвращает значение свойства данного элемента.
Если для thisArg также указано значение, созданная функция обратного вызова типа _.matchesProperty возвращает true для элементов с соответствующим значением свойства, иначе false.
Если для iteratee указан объект, созданная функция обратного вызова типа _.matches возвращает true для элементов, имеющих свойства данного объекта, иначе false.
Аргументы
-
collection(Массив|Объект|строка): Коллекция для итерирования. -
[iteratee](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляiteratee.
Возвращаемое значение
(*): Возвращает максимальное значение.
Пример
_.max([4, 2, 8, 6]);
// => 8
_.max([]);
// => -Infinity
var users = [
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 }
];
_.max(users, function(chr) {
return chr.age;
});
// => { 'user': 'fred', 'age': 40 }
// using the `_.property` callback shorthand
_.max(users, 'age');
// => { 'user': 'fred', 'age': 40 }
_.min(collection, [iteratee], [thisArg])
Возвращает минимальное значение из collection. Если collection пустое или ложное Infinity возвращается. Если предоставлена функция iteratee, она вызывается для каждого значения в collection, чтобы сгенерировать критерий ранжирования. Функция iteratee привязана к thisArg и вызывается с тремя аргументами: (значение, индекс, коллекция).
Если для iteratee указано имя свойства, созданная функция обратного вызова типа _.property возвращает значение свойства данного элемента.
Если для thisArg также указано значение, созданная функция обратного вызова типа _.matchesProperty возвращает true для элементов с соответствующим значением свойства, иначе false.
Если для iteratee указан объект, созданная функция обратного вызова типа _.matches возвращает true для элементов, имеющих свойства данного объекта, иначе false.
Аргументы
-
collection(Массив|Объект|строка): Коллекция для итерирования. -
[iteratee](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляiteratee.
Возвращаемое значение
(*): Возвращает минимальное значение.
Пример
_.min([4, 2, 8, 6]);
// => 2
_.min([]);
// => Infinity
var users = [
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 }
];
_.min(users, function(chr) {
return chr.age;
});
// => { 'user': 'barney', 'age': 36 }
// using the `_.property` callback shorthand
_.min(users, 'age');
// => { 'user': 'barney', 'age': 36 }
_.round(n, [precision=0])
Вычисляет n, округлённое до precision.
Аргументы
-
n(число): Число для округления. -
[precision=0](число): Точность округления.
Возвращаемое значение
(число): Возвращает округлённое число.
Пример
_.round(4.006); // => 4 _.round(4.006, 2); // => 4.01 _.round(4060, -2); // => 4100
_.sum(collection, [iteratee], [thisArg])
Возвращает сумму значений в collection.
Аргументы
-
collection(Массив|Объект|строка): Коллекция для итерирования. -
[iteratee](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляiteratee.
Возвращаемое значение
(число): Возвращает сумму.
Пример
_.sum([4, 6]);
// => 10
_.sum({ 'a': 4, 'b': 6 });
// => 10
var objects = [
{ 'n': 4 },
{ 'n': 6 }
];
_.sum(objects, function(object) {
return object.n;
});
// => 10
// using the `_.property` callback shorthand
_.sum(objects, 'n');
// => 10
Методы «Число»
_.inRange(n, [start=0], end)
Проверяет, находится ли n в диапазоне от start до, но не включая end. Если end не указано, оно устанавливается в start, а start устанавливается в 0.
Аргументы
-
n(число): Число для проверки. -
[start=0](число): Начало диапазона. -
end(число): Конец диапазона.
Возвращаемое значение
(логическое): Возвращает true, если n находится в диапазоне, иначе 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
_.random([min=0], [max=1], [floating])
Производит случайное число между min и max (включительно). Если задан только один аргумент, возвращается число между 0 и заданным числом. Если floating равно true, или min или max являются числами с плавающей запятой, вместо целого числа возвращается число с плавающей запятой.
Аргументы
-
[min=0](число): Минимальное возможное значение. -
[max=1](число): Максимальное возможное значение. -
[floating](логическое): Указать возврат числа с плавающей запятой.
Возвращаемое значение
(число): Возвращает случайное число.
Пример
_.random(0, 5); // => an integer between 0 and 5 _.random(5); // => also an integer between 0 and 5 _.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
Методы «Объект»
_.assign(object, [sources], [customizer], [thisArg])
Присваивает собственные перечисляемые свойства объекта(ов) source объекту destination. Последующие source объекты перезаписывают присвоения свойств предыдущих source объектов. Если customizer предоставлена, она вызывается для создания назначенных значений. customizer привязана к thisArg и вызывается с пятью аргументами:
(objectValue, sourceValue, key, object, source).
Примечание: Этот метод изменяет object и основан на Object.assign.
Псевдонимы
_.extend
Аргументы
-
object(Объект): Объект назначения. -
[sources](...Объект): Источник объектов. -
[customizer](Функция): Функция для настройки назначенных значений. -
[thisArg](*): Связываниеthisдляcustomizer.
Возвращаемое значение
(Объект): Возвращает object.
Пример
_.assign({ 'user': 'barney' }, { 'age': 40 }, { 'user': 'fred' });
// => { 'user': 'fred', 'age': 40 }
// using a customizer callback
var defaults = _.partialRight(_.assign, function(value, other) {
return _.isUndefined(value) ? other : value;
});
defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });
// => { 'user': 'barney', 'age': 36 }
_.create(prototype, [properties])
Создаёт объект, наследующий от данного объекта prototype. Если объект properties предоставлен, его собственные перечисляемые свойства присваиваются созданному объекту.
Аргументы
-
prototype(Объект): Объект, от которого нужно унаследовать. -
[properties](Объект): Свойства, которые нужно присвоить объекту.
Возвращаемое значение
(Объект): Возвращает новый объект.
Пример
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])
Присваивает собственные перечисляемые свойства объекта(ов) source объекту destination для всех свойств destination, которые разрешаются в undefined. После того, как свойство установлено, дополнительные значения того же свойства игнорируются.
Примечание: Этот метод изменяет object.
Аргументы
-
object(Объект): Объект назначения. -
[sources](...Объект): Источник объектов.
Возвращаемое значение
(Объект): Возвращает object.
Пример
_.defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' });
// => { 'user': 'barney', 'age': 36 }
_.defaultsDeep(object, [sources])
Этот метод похож на _.defaults, за исключением того, что он рекурсивно присваивает свойства по умолчанию.
Примечание: Этот метод изменяет object.
Аргументы
-
object(Объект): Объект назначения. -
[sources](...Объект): Источник объектов.
Возвращаемое значение
(Объект): Возвращает object.
Пример
_.defaultsDeep({ 'user': { 'name': 'barney' } }, { 'user': { 'name': 'fred', 'age': 36 } });
// => { 'user': { 'name': 'barney', 'age': 36 } }
_.findKey(object, [predicate=_.identity], [thisArg])
Этот метод похож на _.find, за исключением того, что он возвращает ключ первого элемента, predicate для которого возвращает истинное значение, вместо самого элемента.
Если для predicate задано имя свойства, созданный _.property стиль обратного вызова возвращает значение свойства данного элемента.
Если для thisArg также задано значение, созданный _.matchesProperty стиль обратного вызова возвращает true для элементов, у которых есть соответствующее значение свойства, иначе false.
Если для predicate задан объект, созданный _.matches стиль обратного вызова возвращает true для элементов, у которых есть свойства заданного объекта, иначе false.
Аргументы
-
object(Объект): Объект для поиска. -
[predicate=_.identity](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляpredicate.
Возвращает
(*): Возвращает ключ соответствующего элемента, иначе undefined.
Пример
var users = {
'barney': { 'age': 36, 'active': true },
'fred': { 'age': 40, 'active': false },
'pebbles': { 'age': 1, 'active': true }
};
_.findKey(users, function(chr) {
return chr.age < 40;
});
// => 'barney' (iteration order is not guaranteed)
// using the `_.matches` callback shorthand
_.findKey(users, { 'age': 1, 'active': true });
// => 'pebbles'
// using the `_.matchesProperty` callback shorthand
_.findKey(users, 'active', false);
// => 'fred'
// using the `_.property` callback shorthand
_.findKey(users, 'active');
// => 'barney'
_.findLastKey(object, [predicate=_.identity], [thisArg])
Этот метод похож на _.findKey, за исключением того, что он перебирает элементы коллекции в обратном порядке.
Если для predicate задано имя свойства, созданный _.property стиль обратного вызова возвращает значение свойства данного элемента.
Если для thisArg также задано значение, созданный _.matchesProperty стиль обратного вызова возвращает true для элементов, у которых есть соответствующее значение свойства, иначе false.
Если для predicate задан объект, созданный _.matches стиль обратного вызова возвращает true для элементов, у которых есть свойства заданного объекта, иначе false.
Аргументы
-
object(Объект): Объект для поиска. -
[predicate=_.identity](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляpredicate.
Возвращает
(*): Возвращает ключ соответствующего элемента, иначе undefined.
Пример
var users = {
'barney': { 'age': 36, 'active': true },
'fred': { 'age': 40, 'active': false },
'pebbles': { 'age': 1, 'active': true }
};
_.findLastKey(users, function(chr) {
return chr.age < 40;
});
// => returns `pebbles` assuming `_.findKey` returns `barney`
// using the `_.matches` callback shorthand
_.findLastKey(users, { 'age': 36, 'active': true });
// => 'barney'
// using the `_.matchesProperty` callback shorthand
_.findLastKey(users, 'active', false);
// => 'fred'
// using the `_.property` callback shorthand
_.findLastKey(users, 'active');
// => 'pebbles'
_.forIn(object, [iteratee=_.identity], [thisArg])
Перебирает собственные и унаследованные перечисляемые свойства объекта, вызывая iteratee для каждого свойства. iteratee привязано к thisArg и вызывается с тремя аргументами: (значение, ключ, объект). Функции итератора могут завершить итерацию досрочно, явно вернув false.
Аргументы
-
object(Объект): Объект для перебора. -
[iteratee=_.identity](Функция): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляiteratee.
Возвращает
(Объект): Возвращает 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', and 'c' (iteration order is not guaranteed)
_.forInRight(object, [iteratee=_.identity], [thisArg])
Этот метод похож на _.forIn, за исключением того, что он перебирает свойства object в обратном порядке.
Аргументы
-
object(Объект): Объект для перебора. -
[iteratee=_.identity](Функция): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляiteratee.
Возвращает
(Объект): Возвращает 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', and 'a' assuming `_.forIn ` logs 'a', 'b', and 'c'
_.forOwn(object, [iteratee=_.identity], [thisArg])
Перебирает собственные перечисляемые свойства объекта, вызывая iteratee для каждого свойства. iteratee привязано к thisArg и вызывается с тремя аргументами: (значение, ключ, объект). Функции итератора могут завершить итерацию досрочно, явно вернув false.
Аргументы
-
object(Объект): Объект для перебора. -
[iteratee=_.identity](Функция): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляiteratee.
Возвращает
(Объект): Возвращает object.
Пример
function Foo() {
this.a = 1;
this.b = 2;
}
Foo.prototype.c = 3;
_.forOwn(new Foo, function(value, key) {
console.log(key);
});
// => logs 'a' and 'b' (iteration order is not guaranteed)
_.forOwnRight(object, [iteratee=_.identity], [thisArg])
Этот метод похож на _.forOwn, за исключением того, что он перебирает свойства object в обратном порядке.
Аргументы
-
object(Объект): Объект для перебора. -
[iteratee=_.identity](Функция): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляiteratee.
Возвращает
(Объект): Возвращает object.
Пример
function Foo() {
this.a = 1;
this.b = 2;
}
Foo.prototype.c = 3;
_.forOwnRight(new Foo, function(value, key) {
console.log(key);
});
// => logs 'b' and 'a' assuming `_.forOwn` logs 'a' and 'b'
_.functions(object)
Создает массив имён свойств-функций из всех перечисляемых свойств, собственных и унаследованных, объекта object.
Псевдонимы
_.methods
Аргументы
-
object(Объект): Объект для проверки.
Возвращает
(Массив): Возвращает новый массив имён свойств.
Пример
_.functions(_); // => ['after', 'ary', 'assign', ...]
_.get(object, path, [defaultValue])
Получает значение свойства по path в object. Если полученное значение undefined используется значение по умолчанию defaultValue.
Аргументы
-
object(Объект): Объект для запроса. -
path(Массив|строка): Путь к свойству для получения. -
[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(Объект): Объект для запроса. -
path(Массив|строка): Путь для проверки.
Возвращает
(логическое): Возвращает true если path является прямым свойством, иначе false.
Пример
var object = { 'a': { 'b': { 'c': 3 } } };
_.has(object, 'a');
// => true
_.has(object, 'a.b.c');
// => true
_.has(object, ['a', 'b', 'c']);
// => true
_.invert(object, [multiValue])
Создаёт объект, составленный из инвертированных ключей и значений object. Если object содержит дублирующие значения, последующие значения перезаписывают назначения свойств предыдущих значений, если multiValue не true.
Аргументы
-
object(Объект): Объект для инвертирования. -
[multiValue](логическое): Разрешить несколько значений на ключ.
Возвращает
(Объект): Возвращает новый инвертированный объект.
Пример
var object = { 'a': 1, 'b': 2, 'c': 1 };
_.invert(object);
// => { '1': 'c', '2': 'b' }
// with `multiValue`
_.invert(object, true);
// => { '1': ['a', 'c'], '2': ['b'] }
_.keys(object)
Создаёт массив собственных перечисляемых имён свойств object.
Примечание: Значения, не являющиеся объектами, принудительно преобразуются в объекты. См. спецификацию ES для получения более подробной информации.
Аргументы
-
object(Объект): Объект для запроса.
Возвращает
(Массив): Возвращает массив имён свойств.
Пример
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.
Примечание: Значения, не являющиеся объектами, принудительно преобразуются в объекты.
Аргументы
-
object(Объект): Объект для запроса.
Возвращает
(Массив): Возвращает массив имён свойств.
Пример
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], [thisArg])
Обратное _.mapValues; этот метод создаёт объект с теми же значениями, что и в object и ключами, сгенерированными путём прохождения каждого собственного перечисляемого свойства object через iteratee.
Аргументы
-
object(Объект): Объект для итерации. -
[iteratee=_.identity](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляiteratee.
Возвращает
(Объект): Возвращает новый отображённый объект.
Пример
_.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {
return key + value;
});
// => { 'a1': 1, 'b2': 2 }
_.mapValues(объект, [итератор=_.identity], [thisArg])
Создаёт объект с теми же ключами, что и object, и значениями, сгенерированными путём выполнения каждой собственной перечисляемой свойства object через iteratee. Функция итератора связана с thisArg и вызывается с тремя аргументами:
(значение, ключ, объект).
Если для iteratee задано имя свойства, созданный _.property стиль обратного вызова возвращает значение свойства данного элемента.
Если для thisArg также задано значение, созданный _.matchesProperty стиль обратного вызова возвращает true для элементов, которые имеют соответствующее значение свойства, в противном случае false.
Если для iteratee задан объект, созданный _.matches стиль обратного вызова возвращает true для элементов, которые имеют свойства заданного объекта, в противном случае false.
Аргументы
-
object(Объект): Объект для итерации. -
[iteratee=_.identity](Функция|Объект|строка): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisдляiteratee.
Возвращает
(Объект): Возвращает новый отображённый объект.
Пример
_.mapValues({ 'a': 1, 'b': 2 }, function(n) {
return n * 3;
});
// => { 'a': 3, 'b': 6 }
var users = {
'fred': { 'user': 'fred', 'age': 40 },
'pebbles': { 'user': 'pebbles', 'age': 1 }
};
// using the `_.property` callback shorthand
_.mapValues(users, 'age');
// => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
_.merge(объект, [источники], [кастомизатор], [thisArg])
Рекурсивно объединяет собственные перечисляемые свойства объекта (объектов) источника, которые не разрешаются в undefined в целевой объект. Последующие источники перезаписывают назначения свойств предыдущих источников. Если customizer задан, он вызывается для создания объединённых значений целевых и исходных свойств. Если customizer возвращает undefined, объединение обрабатывается методом вместо этого. customizer связан с thisArg и вызывается с пятью аргументами: (значение объекта, значение источника, ключ, объект, источник).
Аргументы
-
object(Объект): Целевой объект. -
[sources](...Объект): Объекты источника. -
[customizer](Функция): Функция для настройки назначенных значений. -
[thisArg](*): Связываниеthisдляcustomizer.
Возвращает
(Объект): Возвращает object.
Пример
var users = {
'data': [{ 'user': 'barney' }, { 'user': 'fred' }]
};
var ages = {
'data': [{ 'age': 36 }, { 'age': 40 }]
};
_.merge(users, ages);
// => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }
// using a customizer callback
var object = {
'fruits': ['apple'],
'vegetables': ['beet']
};
var other = {
'fruits': ['banana'],
'vegetables': ['carrot']
};
_.merge(object, other, function(a, b) {
if (_.isArray(a)) {
return a.concat(b);
}
});
// => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }
_.omit(объект, [предикат], [thisArg])
Противоположность _.pick; этот метод создаёт объект, состоящий из собственных и унаследованных перечисляемых свойств object которые не пропущены.
Аргументы
-
object(Объект): Исходный объект. -
[predicate](...(строка|массив строк|Функция)): Функция, вызываемая на каждой итерации, или имена свойств для пропуска, заданные как отдельные имена свойств или массивы имён свойств. -
[thisArg](*): Связываниеthisдляpredicate.
Возвращает
(Объект): Возвращает новый объект.
Пример
var object = { 'user': 'fred', 'age': 40 };
_.omit(object, 'age');
// => { 'user': 'fred' }
_.omit(object, _.isNumber);
// => { 'user': 'fred' }
_.pairs(объект)
Создаёт двумерный массив пар ключ-значение для object, например [[key1, value1], [key2, value2]].
Аргументы
-
object(Объект): Объект для запроса.
Возвращает
(Массив): Возвращает новый массив пар ключ-значение.
Пример
_.pairs({ 'barney': 36, 'fred': 40 });
// => [['barney', 36], ['fred', 40]] (iteration order is not guaranteed)
_.pick(объект, [предикат], [thisArg])
Создаёт объект, состоящий из выбранных object свойств. Имена свойств могут быть заданы как отдельные аргументы или как массивы имён свойств. Если predicate задан, он вызывается для каждого свойства object выбирая свойства predicate возвращает значение истины для. Предикат связан с thisArg и вызывается с тремя аргументами: (значение, ключ, объект).
Аргументы
-
object(Объект): Исходный объект. -
[predicate](...(строка|массив строк|Функция)): Функция, вызываемая на каждой итерации, или имена свойств для выбора, заданные как отдельные имена свойств или массивы имён свойств. -
[thisArg](*): Связываниеthisдляpredicate.
Возвращает
(Объект): Возвращает новый объект.
Пример
var object = { 'user': 'fred', 'age': 40 };
_.pick(object, 'user');
// => { 'user': 'fred' }
_.pick(object, _.isString);
// => { 'user': 'fred' }
_.result(объект, путь, [значение по умолчанию])
Этот метод похож на _.get, за исключением того, что если результирующее значение является функцией, она вызывается со связыванием this родительского объекта и возвращается её результат.
Аргументы
-
object(Объект): Объект для запроса. -
path(Массив|строка): Путь к свойству для разрешения. -
[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.b.c', 'default');
// => 'default'
_.result(object, 'a.b.c', _.constant('default'));
// => 'default'
_.set(объект, путь, значение)
Устанавливает значение свойства path для object. Если часть path не существует, она создаётся.
Аргументы
-
object(Объект): Объект для расширения. -
path(Массив|строка): Путь к свойству для установки. -
value(*): Значение для установки.
Возвращает
(Объект): Возвращает 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
_.transform(объект, [итератор=_.identity], [аккумулятора], [thisArg])
Альтернатива _.reduce; этот метод преобразует object в новый accumulator объект, который является результатом выполнения каждого из его собственных перечисляемых свойств через iteratee, при этом каждое обращение потенциально изменяет accumulator объект. iteratee связан с thisArg и вызывается с четырьмя аргументами: (аккумулятор, значение, ключ, объект). Функции итератора могут выйти из итерации раньше, явно возвращая false.
Аргументы
-
object(Массив|Объект): Объект для итерации. -
[iteratee=_.identity](Функция): Функция, вызываемая на каждой итерации. -
[accumulator](*): Значение пользовательского аккумулятора. -
[thisArg](*): Связываниеthisдляiteratee.
Возвращает
(*): Возвращает накопленное значение.
Пример
_.transform([2, 3, 4], function(result, n) {
result.push(n *= n);
return n % 2 == 0;
});
// => [4, 9]
_.transform({ 'a': 1, 'b': 2 }, function(result, n, key) {
result[key] = n * 3;
});
// => { 'a': 3, 'b': 6 }
_.values(объект)
Создаёт массив собственных перечисляемых значений свойств объекта object.
Примечание: Значения, не являющиеся объектами, приводятся к объектам.
Аргументы
-
object(Объект): Объект для запроса.
Возвращает
(Массив): Возвращает массив значений свойств.
Пример
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(Объект): Объект для запроса.
Возвращает
(Массив): Возвращает массив значений свойств.
Пример
function Foo() {
this.a = 1;
this.b = 2;
}
Foo.prototype.c = 3;
_.valuesIn(new Foo);
// => [1, 2, 3] (iteration order is not guaranteed)
Методы “Строка”
_.camelCase([строка=''])
Преобразует string в верхний регистр.
Аргументы
-
[string=''](строка): Строка для преобразования.
Возвращает
(строка): Возвращает строку в формате верхнего регистра.
Пример
_.camelCase('Foo Bar');
// => 'fooBar'
_.camelCase('--foo-bar');
// => 'fooBar'
_.camelCase('__foo_bar__');
// => 'fooBar'
_.capitalize([строка=''])
Заглавная буква первой буквы string.
Аргументы
-
[string=''](строка): Строка для приведения к верхнему регистру.
Возвращает
(строка): Возвращает строку в верхнем регистре.
Пример
_.capitalize('fred');
// => 'Fred'
_.deburr([строка=''])
Преобразует string, заменяя дополнительные латинские буквы на базовые латинские и удаляя диакритические знаки.
Аргументы
-
[string=''](строка): Строка, которую нужно преобразовать.
Возвращает
(строка): Возвращает преобразованную строку.
Пример
_.deburr('déjà vu');
// => 'deja vu'
_.endsWith([строка=''], [целевая строка], [позиция=длина строки])
Проверяет, заканчивается ли string заданной целевой строкой.
Аргументы
-
[string=''](строка): Строка для проверки. -
[target](строка): Целевая строка для проверки. -
[position=string.length](число): Позиция для начала проверки.
Возвращает
(булево): Возвращает true если string заканчивается на target, в противном случае false.
Пример
_.endsWith('abc', 'c');
// => true
_.endsWith('abc', 'b');
// => false
_.endsWith('abc', 'b', 2);
// => true
_.escape([строка=''])
Преобразует символы "&", "<", ">", '"', "'", и "`" в string в соответствующие HTML-сущности.
Примечание: Другие символы не экранируются. Для экранирования дополнительных символов используйте стороннюю библиотеку, такую как he.
Хотя символ ">" экранирован для симметрии, символы типа ">" и "/" не нуждаются в экранировании в HTML и не имеют особого значения, если они не входят в тег или нецитируемое значение атрибута. См. статью Матиаса Биненса (в разделе "полусвязанный интересный факт") для получения дополнительной информации.
Обратные кавычки экранируются, так как в Internet Explorer < 9, они могут выйти за пределы значений атрибутов или HTML-комментариев. См. #59, #102, #108, и #133 в Справочнике по безопасности HTML5 для получения дополнительной информации.
При работе с HTML всегда следует цитировать значения атрибутов, чтобы уменьшить векторы XSS.
Аргументы
-
[string=''](строка): Строка для экранирования.
Возвращает
(строка): Возвращает экранированную строку.
Пример
_.escape('fred, barney, & pebbles');
// => 'fred, barney, &amp; pebbles'
_.escapeRegExp([строка=''])
Экранирует RegExp специальные символы "", "/", "^", "$", ".", "|", "?", "*", "+", "(", ")", "[", "]", "{" и "}" в string.
Аргументы
-
[string=''](строка): Строка для экранирования.
Возвращает
(строка): Возвращает экранированную строку.
Пример
_.escapeRegExp('[lodash](https://lodash.com/)');
// => '\[lodash\]\(https:\/\/lodash\.com\/\)'
_.kebabCase([строка=''])
Преобразует string в кебаб-кейс.
Аргументы
-
[string=''](строка): Строка для преобразования.
Возвращает
(строка): Возвращает строку в кебаб-кейс.
Пример
_.kebabCase('Foo Bar');
// => 'foo-bar'
_.kebabCase('fooBar');
// => 'foo-bar'
_.kebabCase('__foo_bar__');
// => 'foo-bar'
_.pad([строка=''], [длина=0], [символы=' '])
Добавляет пробелы слева и справа к string, если она короче length. Символы заполнения усекаются, если они не делятся на length.
Аргументы
-
[string=''](строка): Строка для заполнения. -
[length=0](число): Длина заполнения. -
[chars=' '](строка): Строка, используемая для заполнения.
Возвращает
(строка): Возвращает заполненную строку.
Пример
_.pad('abc', 8);
// => ' abc '
_.pad('abc', 8, '_-');
// => '_-abc_-_'
_.pad('abc', 3);
// => 'abc'
_.padLeft([строка=''], [длина=0], [символы=' '])
Добавляет пробелы слева к string, если она короче length. Символы заполнения усекаются, если они превышают length.
Аргументы
-
[string=''](строка): Строка для заполнения. -
[length=0](число): Длина заполнения. -
[chars=' '](строка): Строка, используемая для заполнения.
Возвращает
(строка): Возвращает заполненную строку.
Пример
_.padLeft('abc', 6);
// => ' abc'
_.padLeft('abc', 6, '_-');
// => '_-_abc'
_.padLeft('abc', 3);
// => 'abc'
_.padRight([строка=''], [длина=0], [символы=' '])
Добавляет пробелы справа к string если она короче length. Символы заполнения усекаются, если они превышают length.
Аргументы
-
[string=''](строка): Строка для заполнения. -
[length=0](число): Длина заполнения. -
[chars=' '](строка): Строка, используемая для заполнения.
Возвращает
(строка): Возвращает заполненную строку.
Пример
_.padRight('abc', 6);
// => 'abc '
_.padRight('abc', 6, '_-');
// => 'abc_-_'
_.padRight('abc', 3);
// => 'abc'
_.parseInt(строка, [основание])
Преобразует string в целое число заданного основания. Если radix равно undefined или 0, используется основание 10, за исключением случаев, когда value является шестнадцатеричным, в этом случае используется основание 16.
Примечание: Этот метод соответствует реализации ES5 parseInt.
Аргументы
-
string(строка): Строка для преобразования. -
[radix](число): Основание для интерпретацииvalue.
Возвращает
(число): Возвращает преобразованное целое число.
Пример
_.parseInt('08');
// => 8
_.map(['6', '08', '10'], _.parseInt);
// => [6, 8, 10]
_.repeat([строка=''], [n=0])
Повторяет заданную строку n раз.
Аргументы
-
[string=''](строка): Строка для повторения. -
[n=0](число): Количество повторений.
Возвращает
(строка): Возвращает повторяющуюся строку.
Пример
_.repeat('*', 3);
// => '***'
_.repeat('abc', 2);
// => 'abcabc'
_.repeat('abc', 0);
// => ''
_.snakeCase([строка=''])
Преобразует string в змеиный регистр.
Аргументы
-
[string=''](строка): Строка для преобразования.
Возвращает
(строка): Возвращает строку в змеином регистре.
Пример
_.snakeCase('Foo Bar');
// => 'foo_bar'
_.snakeCase('fooBar');
// => 'foo_bar'
_.snakeCase('--foo-bar');
// => 'foo_bar'
_.startCase([строка=''])
Преобразует string в регистр с большой буквы в начале каждого слова.
Аргументы
-
[string=''](строка): Строка для преобразования.
Возвращает
(строка): Возвращает строку с большой буквы в начале каждого слова.
Пример
_.startCase('--foo-bar');
// => 'Foo Bar'
_.startCase('fooBar');
// => 'Foo Bar'
_.startCase('__foo_bar__');
// => 'Foo Bar'
_.startsWith([строка=''], [целевая строка], [позиция=0])
Проверяет, начинается ли string с заданной целевой строки.
Аргументы
-
[string=''](строка): Строка для проверки. -
[target](строка): Целевая строка для проверки. -
[position=0](число): Позиция для начала проверки.
Возвращает
(булево): Возвращает true если string начинается с target, в противном случае false.
Пример
_.startsWith('abc', 'a');
// => true
_.startsWith('abc', 'b');
// => false
_.startsWith('abc', 'b', 1);
// => true
_.template([строка=''], [опции])
Создаёт скомпилированную функцию шаблона, которая может интерполировать свойства данных в разделителях "interpolate", HTML-экранировать интерполированные свойства данных в разделителях "escape" и выполнять JavaScript-код в разделителях "evaluate". Свойства данных могут быть доступны как свободные переменные в шаблоне. Если объект настроек предоставлен, он имеет приоритет над значениями _.templateSettings.
Примечание: В сборке для разработки _.template использует sourceURLs для более удобной отладки.
Для получения дополнительной информации о предварительной компиляции шаблонов см. документацию по пользовательским сборкам lodash.
Для получения дополнительной информации о песочницах расширений Chrome см. документацию по расширениям Chrome.
Аргументы
-
[string=''](строка): Строка шаблона. -
[options](объект): Объект опций. -
[options.escape](RegExp): Разделитель HTML-экранирования. -
[options.evaluate](RegExp): Разделитель "evaluate". -
[options.imports](объект): Объект для импорта в шаблон в качестве свободных переменных. -
[options.interpolate](RegExp): Разделитель "interpolate". -
[options.sourceURL](строка): sourceURL скомпилированного источника шаблона. -
[options.variable](строка): Имя переменной объекта данных.
Возвращаемое значение
(Функция): Возвращает скомпилированную функцию шаблона.
Пример
// using the "interpolate" delimiter to create a compiled template
var compiled = _.template('hello <%= user %>!');
compiled({ 'user': 'fred' });
// => 'hello fred!'
// using the HTML "escape" delimiter to escape data property values
var compiled = _.template('<b><%- value %></b>');
compiled({ 'value': '<script>' });
// => '<b>&lt;script&gt;</b>'
// using 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>'
// using the internal `print` function in "evaluate" delimiters
var compiled = _.template('<% print("hello " + user); %>!');
compiled({ 'user': 'barney' });
// => 'hello barney!'
// using the ES delimiter as an alternative to the default "interpolate" delimiter
var compiled = _.template('hello ${ user }!');
compiled({ 'user': 'pebbles' });
// => 'hello pebbles!'
// using custom template delimiters
_.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
var compiled = _.template('hello {{ user }}!');
compiled({ 'user': 'mustache' });
// => 'hello mustache!'
// using backslashes to treat delimiters as plain text
var compiled = _.template('<%= "\\<%- value %\\>" %>');
compiled({ 'value': 'ignored' });
// => '<%- value %>'
// using 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>'
// using 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
// using 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;
// }
// using the `source` property to inline compiled templates for meaningful
// line numbers in error messages and a stack trace
fs.writeFileSync(path.join(cwd, 'jst.js'), '\
var JST = {\
"main": ' + _.template(mainText).source + '\
};\
');
_.trim([string=''], [chars=whitespace])
Удаляет начальные и конечные пробелы или указанные символы из string.
Аргументы
-
[string=''](строка): Строка для обрезки. -
[chars=whitespace](строка): Символы для обрезки.
Возвращаемое значение
(строка): Возвращает отформатированную строку.
Пример
_.trim(' abc ');
// => 'abc'
_.trim('-_-abc-_-', '_-');
// => 'abc'
_.map([' foo ', ' bar '], _.trim);
// => ['foo', 'bar']
_.trimLeft([string=''], [chars=whitespace])
Удаляет начальные пробелы или указанные символы из string.
Аргументы
-
[string=''](строка): Строка для обрезки. -
[chars=whitespace](строка): Символы для обрезки.
Возвращаемое значение
(строка): Возвращает отформатированную строку.
Пример
_.trimLeft(' abc ');
// => 'abc '
_.trimLeft('-_-abc-_-', '_-');
// => 'abc-_-'
_.trimRight([string=''], [chars=whitespace])
Удаляет конечные пробелы или указанные символы из string.
Аргументы
-
[string=''](строка): Строка для обрезки. -
[chars=whitespace](строка): Символы для обрезки.
Возвращаемое значение
(строка): Возвращает отформатированную строку.
Пример
_.trimRight(' abc ');
// => ' abc'
_.trimRight('-_-abc-_-', '_-');
// => '-_-abc'
_.trunc([string=''], [options], [options.length=30], [options.omission='...'], [options.separator])
Усекает string если она длиннее заданной максимальной длины строки. Последние символы усечённой строки заменяются строкой опущения, которая по умолчанию равна "...".
Аргументы
-
[string=''](строка): Строка для усечения. -
[options](объект|число): Объект опций или максимальная длина строки. -
[options.length=30](число): Максимальная длина строки. -
[options.omission='...'](строка): Строка для обозначения опущения текста. -
[options.separator](RegExp|строка): Шаблон разделителя для усечения.
Возвращаемое значение
(строка): Возвращает усечённую строку.
Пример
_.trunc('hi-diddly-ho there, neighborino');
// => 'hi-diddly-ho there, neighbo...'
_.trunc('hi-diddly-ho there, neighborino', 24);
// => 'hi-diddly-ho there, n...'
_.trunc('hi-diddly-ho there, neighborino', {
'length': 24,
'separator': ' '
});
// => 'hi-diddly-ho there,...'
_.trunc('hi-diddly-ho there, neighborino', {
'length': 24,
'separator': /,? +/
});
// => 'hi-diddly-ho there...'
_.trunc('hi-diddly-ho there, neighborino', {
'omission': ' [...]'
});
// => 'hi-diddly-ho there, neig [...]'
_.unescape([string=''])
Обратная функция к _.escape; этот метод преобразует HTML-сущности &amp;, &lt;, &gt;, &quot;, &#39;, и &#96; в string в соответствующие символы.
Примечание: Другие HTML-сущности не декодируются. Для декодирования дополнительных HTML-сущностей используйте стороннюю библиотеку, например, he.
Аргументы
-
[string=''](строка): Строка для декодирования.
Возвращаемое значение
(строка): Возвращает декодированную строку.
Пример
_.unescape('fred, barney, &amp; pebbles');
// => 'fred, barney, & pebbles'
_.words([string=''], [pattern])
Разбивает string на массив слов.
Аргументы
-
[string=''](строка): Строка для проверки. -
[pattern](RegExp|строка): Шаблон для поиска слов.
Возвращаемое значение
(Массив): Возвращает слова из string.
Пример
_.words('fred, barney, & pebbles');
// => ['fred', 'barney', 'pebbles']
_.words('fred, barney, & pebbles', /[^, ]+/g);
// => ['fred', 'barney', '&', 'pebbles']
Методы «Утилит»
_.attempt(func)
Пытается вызвать func, возвращая либо результат, либо пойманное исключение. Любые дополнительные аргументы предоставляются func при его вызове.
Аргументы
-
func(Функция): Функция для попытки.
Возвращаемое значение
(*): Возвращает результат func или объект ошибки.
Пример
// avoid throwing errors for invalid selectors
var elements = _.attempt(function(selector) {
return document.querySelectorAll(selector);
}, '>_>');
if (_.isError(elements)) {
elements = [];
}
_.callback([func=_.identity], [thisArg])
Создаёт функцию, которая вызывает func с контекстом this и аргументами созданной функции. Если func — это имя свойства, созданный коллбэк возвращает значение свойства для заданного элемента. Если func — это объект, созданный коллбэк возвращает true для элементов, содержащих эквивалентные свойства объекта; в противном случае возвращает false.
Псевдонимы
_.iteratee
Аргументы
-
[func=_.identity](*): Значение для преобразования в коллбэк. -
[thisArg](*): Контекстthisвызоваfunc.
Возвращаемое значение
(Функция): Возвращает коллбэк.
Пример
var users = [
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 }
];
// wrap to create custom callback shorthands
_.callback = _.wrap(_.callback, function(callback, func, thisArg) {
var match = /^(.+?)__([gl]t)(.+)$/.exec(func);
if (!match) {
return callback(func, thisArg);
}
return function(object) {
return match[2] == 'gt'
? object[match[1]] > match[3]
: object[match[1]] < match[3];
};
});
_.filter(users, 'age__gt36');
// => [{ 'user': 'fred', 'age': 40 }]
_.constant(value)
Создаёт функцию, которая возвращает value.
Аргументы
-
value(*): Значение, которое должна возвращать новая функция.
Возвращаемое значение
(Функция): Возвращает новую функцию.
Пример
var object = { 'user': 'fred' };
var getter = _.constant(object);
getter() === object;
// => true
_.identity(value)
Этот метод возвращает первый переданный ему аргумент.
Аргументы
-
value(*): Любое значение.
Возвращаемое значение
(*): Возвращает value.
Пример
var object = { 'user': 'fred' };
_.identity(object) === object;
// => true
_.matches(source)
Создаёт функцию, которая выполняет глубокое сравнение заданного объекта и source, возвращая true если заданный объект имеет эквивалентные значения свойств, в противном случае false.
Примечание: Этот метод поддерживает сравнение массивов, булевых значений, Date объектов, чисел, Object объектов, регулярных выражений и строк. Объекты сравниваются по собственным, а не унаследованным, перечисляемым свойствам. Для сравнения одного собственного или унаследованного значения свойства см. _.matchesProperty.
Аргументы
-
source(Объект): Объект значений свойств для соответствия.
Возвращаемое значение
(Функция): Возвращает новую функцию.
Пример
var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'fred', 'age': 40, 'active': false }
];
_.filter(users, _.matches({ 'age': 40, 'active': false }));
// => [{ 'user': 'fred', 'age': 40, 'active': false }]
_.matchesProperty(path, srcValue)
Создаёт функцию, которая сравнивает значение свойства path заданного объекта со значением value.
Примечание: Этот метод поддерживает сравнение массивов, булевых значений, Date объектов, чисел, Object объектов, регулярных выражений и строк. Объекты сравниваются по собственным, а не унаследованным, перечисляемым свойствам.
Аргументы
-
path(Массив|строка): Путь к свойству, значение которого необходимо получить. -
srcValue(*): Значение для сопоставления.
Возвращаемое значение
(Функция): Возвращает новую функцию.
Пример
var users = [
{ 'user': 'barney' },
{ 'user': 'fred' }
];
_.find(users, _.matchesProperty('user', 'fred'));
// => { 'user': 'fred' }
_.method(path, [args])
Создаёт функцию, которая вызывает метод по пути path на заданном объекте. Любые дополнительные аргументы передаются вызванному методу.
Аргументы
-
path(Массив|строка): Путь к методу для вызова. -
[args](...*): Аргументы для вызова метода.
Возвращает
(Функция): Возвращает новую функцию.
Пример
var objects = [
{ 'a': { 'b': { 'c': _.constant(2) } } },
{ 'a': { 'b': { 'c': _.constant(1) } } }
];
_.map(objects, _.method('a.b.c'));
// => [2, 1]
_.invoke(_.sortBy(objects, _.method(['a', 'b', 'c'])), 'a.b.c');
// => [1, 2]
_.methodOf(object, [args])
Обратная функция _.method; этот метод создает функцию, которая вызывает метод по заданному пути в object. Любые дополнительные аргументы передаются вызванному методу.
Аргументы
-
object(Объект): Объект для запроса. -
[args](...*): Аргументы для вызова метода.
Возвращает
(Функция): Возвращает новую функцию.
Пример
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, чтобы избежать конфликтов, вызванных модификацией исходной функции.
Аргументы
-
[object=lodash](Функция|Объект): Целевой объект. -
source(Объект): Объект функций для добавления. -
[options](Объект): Объект параметров. -
[options.chain=true](булево): Указывает, могут ли добавляемые функции быть цепочными.
Возвращает
(*): Возвращает 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.
Возвращает
(Функция): Возвращает функцию lodash.
Пример
var lodash = _.noConflict();
_.noop()
Функция без действий, которая возвращает undefined независимо от получаемых аргументов.
Пример
var object = { 'user': 'fred' };
_.noop(object) === undefined;
// => true
_.property(path)
Создает функцию, которая возвращает значение свойства по path заданного объекта.
Аргументы
-
path(Массив|строка): Путь к свойству для получения.
Возвращает
(Функция): Возвращает новую функцию.
Пример
var objects = [
{ 'a': { 'b': { 'c': 2 } } },
{ 'a': { 'b': { 'c': 1 } } }
];
_.map(objects, _.property('a.b.c'));
// => [2, 1]
_.pluck(_.sortBy(objects, _.property(['a', 'b', 'c'])), 'a.b.c');
// => [1, 2]
_.propertyOf(object)
Обратная функция _.property; этот метод создает функцию, которая возвращает значение свойства по заданному пути в object.
Аргументы
-
object(Объект): Объект для запроса.
Возвращает
(Функция): Возвращает новую функцию.
Пример
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. Если end не указано, оно устанавливается в start, а start устанавливается в 0. Если end меньше start, создается диапазон нулевой длины, если не указан отрицательный step.
Аргументы
-
[start=0](число): Начало диапазона. -
end(число): Конец диапазона. -
[step=1](число): Значение для приращения или уменьшения.
Возвращает
(Массив): Возвращает новый массив чисел.
Пример
_.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); // => []
_.runInContext([context=root])
Создает новую чистую функцию lodash с использованием заданного объекта context.
Аргументы
-
[context=root](Объект): Объект контекста.
Возвращает
(Функция): Возвращает новую функцию 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
// using `context` to mock `Date#getTime` use in `_.now`
var mock = _.runInContext({
'Date': function() {
return { 'getTime': getTimeMock };
}
});
// or creating a suped-up `defer` in Node.js
var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;
_.times(n, [iteratee=_.identity], [thisArg])
Вызывает функцию iteratee n раз, возвращая массив результатов каждого вызова. iteratee привязана к thisArg и вызывается с одним аргументом; (индекс).
Аргументы
-
n(число): Количество вызововiteratee. -
[iteratee=_.identity](Функция): Функция, вызываемая на каждой итерации. -
[thisArg](*): Связываниеthisсiteratee.
Возвращает
(Массив): Возвращает массив результатов.
Пример
var diceRolls = _.times(3, _.partial(_.random, 1, 6, false));
// => [3, 6, 4]
_.times(3, function(n) {
mage.castSpell(n);
});
// => invokes `mage.castSpell(n)` three times with `n` of `0`, `1`, and `2`
_.times(3, function(n) {
this.cast(n);
}, mage);
// => also invokes `mage.castSpell(n)` three times
_.uniqueId([prefix])
Генерирует уникальный идентификатор. Если prefix предоставлен, ID добавляется к нему.
Аргументы
-
[prefix](строка): Значение для префикса ID.
Возвращает
(строка): Возвращает уникальный ID.
Пример
_.uniqueId('contact_');
// => 'contact_104'
_.uniqueId();
// => '105'
Свойства
_.VERSION
Семантическое номер версии.
_.support
Объект флагов среды выполнения функций.
_.templateSettings
По умолчанию разделители шаблонов, используемые lodash, аналогичны тем, что в встроенном Ruby (ERB). Измените следующие настройки шаблона, чтобы использовать альтернативные разделители.
_.templateSettings.escape
Используется для обнаружения data значений свойств для HTML-эскейпинга.
_.templateSettings.evaluate
Используется для обнаружения кода для оценки.
_.templateSettings.imports
Используется для импорта переменных в скомпилированный шаблон.
_.templateSettings.imports._
Ссылка на функцию lodash.
_.templateSettings.interpolate
Используется для обнаружения data значений свойств для вставки.
_.templateSettings.variable
Используется для ссылки на объект данных в тексте шаблона.
© 2012–2016 The Dojo Foundation
Licensed under the MIT License.
https://lodash.com/docs/3.10.1