Ramda
__ Добавлена в v0.6.0
Специальное значение-заполнитель, используемое для указания «пропусков» в функциях с частичным применением, позволяя частично применять любые комбинации аргументов независимо от их позиций.
Если g — это функция с тремя аргументами с частичным применением, и _ — это R.__, то следующие выражения эквивалентны:
g(1, 2, 3)g(_, 2, 3)(1)g(_, _, 3)(1)(2)g(_, _, 3)(1, 2)g(_, 2, _)(1, 3)g(_, 2)(1)(3)g(_, 2)(1, 3)g(_, 2)(_, 3)(1)
const greet = R.replace('{name}', R.__, 'Hello, {name}!');
greet('Alice'); //=> 'Hello, Alice!' add Добавлена в v0.1.0
Number → Number → Number
Параметры
-
a -
b
Возвращаемое значение
- Число
Складывает два значения.
См. также subtract.
R.add(2, 3); //=> 5 R.add(7)(10); //=> 17
addIndex Добавлена в v0.15.0
((a … → b) … → [a] → *) → ((a …, Int, [a] → b) … → [a] → *)
Параметры
-
fnФункция итерации по списку, которая не передаёт индекс или список в свою обратную функцию.
Возвращаемое значение
- функция Изменённая функция итерации по списку, которая передаёт (элемент, индекс, список) в свою обратную функцию.
Создаёт новую функцию итерации по списку из существующей, добавив два новых параметра в её обратную функцию: текущий индекс и весь список.
Это превратит, например, функцию R.map в функцию, которая больше похожа на Array.prototype.map. Обратите внимание, что это сработает только для функций, в которых функция обратного вызова итерации является первым параметром, а список — последним параметром. (Это последнее может быть несущественным, если параметр списка не используется.)
const mapIndexed = R.addIndex(R.map); mapIndexed((val, idx) => idx + '-' + val, ['f', 'o', 'o', 'b', 'a', 'r']); //=> ['0-f', '1-o', '2-o', '3-b', '4-a', '5-r']
adjust Добавлена в v0.14.0
Number → (a → a) → [a] → [a]
Параметры
-
idxИндекс.
-
fnФункция для применения.
-
listОбъект, похожий на массив, значение которого в указанном индексе будет заменено.
Возвращаемое значение
- Массив Копия объекта, похожго на массив, с элементом в индексе `idx`, заменённым значением, полученным путём применения `fn` к существующему элементу.
Применяет функцию к значению в заданном индексе массива, возвращая новую копию массива с элементом в заданном индексе, заменённым результатом применения функции.
См. также update.
R.adjust(1, R.toUpper, ['a', 'b', 'c', 'd']); //=> ['a', 'B', 'c', 'd'] R.adjust(-1, R.toUpper, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c', 'D']
all Добавлена в v0.1.0
(a → Boolean) → [a] → Boolean
Параметры
-
fnФункция-предикат.
-
listМассив для рассмотрения.
Возвращаемое значение
- Булево `true`, если предикат выполняется для каждого элемента, `false` в противном случае.
Возвращает true если все элементы списка соответствуют предикату, false если есть элементы, которые не соответствуют.
Вызывает метод all второго аргумента, если он существует.
Действует как преобразователь, если в позиции списка задан преобразователь.
См. также any, none, transduce.
const equals3 = R.equals(3); R.all(equals3)([3, 3, 3, 3]); //=> true R.all(equals3)([3, 3, 1, 3]); //=> false
allPass Добавлена в v0.9.0
[(*… → Boolean)] → (*… → Boolean)
Параметры
-
predicatesМассив предикатов для проверки
Возвращаемое значение
- функция Объединённый предикат
Принимает список предикатов и возвращает предикат, который возвращает true для данного списка аргументов, если каждый из предоставленных предикатов удовлетворён этими аргументами.
Возвращаемая функция является функцией с частичным применением, арность которой соответствует арности предиката наивысшей арности.
См. также anyPass.
const isQueen = R.propEq('rank', 'Q');
const isSpade = R.propEq('suit', '♠︎');
const isQueenOfSpades = R.allPass([isQueen, isSpade]);
isQueenOfSpades({rank: 'Q', suit: '♣︎'}); //=> false
isQueenOfSpades({rank: 'Q', suit: '♠︎'}); //=> true always Добавлена в v0.1.0
a → (* → a)
Параметры
-
valЗначение, которое нужно обернуть в функцию
Возвращаемое значение
- функция Функция :: * -> val.
Возвращает функцию, которая всегда возвращает заданное значение. Обратите внимание, что для не примитивных значений возвращаемое значение — ссылка на исходное значение.
Эта функция известна как const, constant, или K (для комбинатора K) в других языках и библиотеках.
const t = R.always('Tee');
t(); //=> 'Tee' and Добавлена в v0.1.0
a → b → a | b
Параметры
-
a -
b
Возвращаемое значение
- Любое первый аргумент, если он ложный, иначе второй аргумент.
Возвращает true если оба аргумента true; false в противном случае.
R.and(true, true); //=> true R.and(true, false); //=> false R.and(false, true); //=> false R.and(false, false); //=> false
andThen Добавлена в v0.27.0
(a → b) → (Promise e a) → (Promise e b)
(a → (Promise e b)) → (Promise e a) → (Promise e b)Параметры
-
onSuccessФункция для применения. Может возвращать значение или промис с значением.
-
p
Возвращаемое значение
- Промис Результат вызова `p.then(onSuccess)`
Возвращает результат применения функции onSuccess к значению внутри успешно разрешённого промиса. Это полезно для работы с промисами внутри композиций функций.
См. также otherwise.
var makeQuery = (email) => ({ query: { email }});
//getMemberName :: String -> Promise ({firstName, lastName})
var getMemberName = R.pipe(
makeQuery,
fetchMember,
R.andThen(R.pick(['firstName', 'lastName']))
); any Добавлена в v0.1.0
(a → Boolean) → [a] → Boolean
Параметры
-
fnФункция-предикат.
-
listМассив для рассмотрения.
Возвращаемое значение
- Булево `true`, если предикат выполняется хотя бы для одного элемента, `false` в противном случае.
Возвращает true если хотя бы один из элементов списка соответствует предикату, false в противном случае.
Вызывает метод any второго аргумента, если он существует.
Действует как преобразователь, если в позиции списка задан преобразователь.
См. также all, none, transduce.
const lessThan0 = R.flip(R.lt)(0); const lessThan2 = R.flip(R.lt)(2); R.any(lessThan0)([1, 2]); //=> false R.any(lessThan2)([1, 2]); //=> true
anyPass Добавлена в v0.9.0
[(*… → Boolean)] → (*… → Boolean)
Параметры
-
predicatesМассив предикатов для проверки
Возвращаемое значение
- функция Объединённый предикат
Принимает список предикатов и возвращает предикат, который возвращает true для данного списка аргументов, если хотя бы один из предоставленных предикатов удовлетворён этими аргументами.
Возвращаемая функция является функцией с частичным применением, арность которой соответствует арности предиката наивысшей арности.
См. также allPass.
const isClub = R.propEq('suit', '♣');
const isSpade = R.propEq('suit', '♠');
const isBlackCard = R.anyPass([isClub, isSpade]);
isBlackCard({rank: '10', suit: '♣'}); //=> true
isBlackCard({rank: 'Q', suit: '♠'}); //=> true
isBlackCard({rank: 'Q', suit: '♦'}); //=> false ap Добавлена в v0.3.0
[a → b] → [a] → [b]
Apply f => f (a → b) → f a → f b(r → a → b) → (r → a) → (r → b)Параметры
-
applyF -
applyX
Возвращаемое значение
- *
ap применяет список функций к списку значений.
Вызывает метод ap второго аргумента, если он существует. Также обрабатывает функции с частичным применением как аппликативные.
R.ap([R.multiply(2), R.add(3)], [1,2,3]); //=> [2, 4, 6, 4, 5, 6]
R.ap([R.concat('tasty '), R.toUpper], ['pizza', 'salad']); //=> ["tasty pizza", "tasty salad", "PIZZA", "SALAD"]
// R.ap can also be used as S combinator
// when only two functions are passed
R.ap(R.concat, R.toUpper)('Ramda') //=> 'RamdaRAMDA' aperture Добавлена в v0.12.0
Number → [a] → [[a]]
Параметры
-
nРазмер кортежей для создания
-
listСписок для разделения на кортежи длины
n
Возвращаемое значение
- Массив Полученный список кортежей длины `n`
Возвращает новый список, состоящий из n-кортежей последовательных элементов. Если n больше длины списка, возвращается пустой список.
Действует как преобразователь, если в позиции списка задан преобразователь.
См. также transduce.
R.aperture(2, [1, 2, 3, 4, 5]); //=> [[1, 2], [2, 3], [3, 4], [4, 5]] R.aperture(3, [1, 2, 3, 4, 5]); //=> [[1, 2, 3], [2, 3, 4], [3, 4, 5]] R.aperture(7, [1, 2, 3, 4, 5]); //=> []
append Добавлена в v0.1.0
a → [a] → [a]
Параметры
-
elЭлемент, который нужно добавить в конец нового списка.
-
listСписок элементов, к которому нужно добавить новый элемент. список.
Возвращаемое значение
- Массив Новый список, содержащий элементы старого списка, за которыми следует `el`.
Возвращает новый список, содержащий содержимое данного списка, за которым следует заданный элемент.
См. также prepend.
R.append('tests', ['write', 'more']); //=> ['write', 'more', 'tests']
R.append('tests', []); //=> ['tests']
R.append(['tests'], ['write', 'more']); //=> ['write', 'more', ['tests']] apply Добавлена в v0.7.0
(*… → a) → [*] → a
Параметры
-
fnФункция, которая будет вызвана с
args -
argsАргументы для вызова
fn
Возвращаемое значение
- * результат Результат, эквивалентный `fn(...args)`
Применяет функцию fn к списку аргументов args. Это полезно для создания функции с фиксированной арностью из поливариантной функции. fn должна быть связанной функцией, если контекст важен.
const nums = [1, 2, 3, -99, 42, 6, 7]; R.apply(Math.max, nums); //=> 42
applySpec Добавлена в v0.20.0
{k: ((a, b, …, m) → v)} → ((a, b, …, m) → {k: v}) Параметры
-
specобъект, рекурсивно сопоставляющий свойства с функциями для вычисления значений этих свойств.
Возвращает
- функция Функция, которая возвращает объект той же структуры, что и `spec`, с каждым свойством, установленным на значение, возвращенное вызовом связанной функции с предоставленными аргументами.
Исходя из объекта spec, рекурсивно сопоставляющего свойства с функциями, создаёт функцию, которая генерирует объект той же структуры, сопоставляя каждое свойство с результатом вызова соответствующей функции с предоставленными аргументами.
const getMetrics = R.applySpec({
sum: R.add,
nested: { mul: R.multiply }
});
getMetrics(2, 4); // => { sum: 6, nested: { mul: 8 } } applyTo Добавлен в v0.25.0
a → (a → b) → b
Параметры
-
xЗначение
-
fФункция для применения
Возвращает
- * Результат применения `f` к `x`
Принимает значение и применяет к нему функцию.
Эта функция также известна как thrush комбинатор.
const t42 = R.applyTo(42); t42(R.identity); //=> 42 t42(R.add(1)); //=> 43
ascend Добавлен в v0.23.0
Ord b => (a → b) → a → a → Number
Параметры
-
fnФункция арности один, возвращающая значение, которое может быть сравнено
-
aПервый элемент для сравнения.
-
bВторой элемент для сравнения.
Возвращает
- Число `-1`, если fn(a) < fn(b), `1`, если fn(b) < fn(a), иначе `0`
Создаёт функцию сравнения по возрастанию из функции, возвращающей значение, которое можно сравнить с < и >.
См. также descend.
const byAge = R.ascend(R.prop('age'));
const people = [
{ name: 'Emma', age: 70 },
{ name: 'Peter', age: 78 },
{ name: 'Mikhail', age: 62 },
];
const peopleByYoungestFirst = R.sort(byAge, people);
//=> [{ name: 'Mikhail', age: 62 },{ name: 'Emma', age: 70 }, { name: 'Peter', age: 78 }] assoc Добавлен в v0.8.0
String → a → {k: v} → {k: v} Параметры
-
propИмя свойства для установки
-
valНовое значение
-
objОбъект для клонирования
Возвращает
- Объект Новый объект, эквивалентный исходному, за исключением изменённого свойства.
Создаёт поверхностную копию объекта, устанавливая или перезаписывая указанное свойство заданным значением. Обратите внимание, что это копирует и сплющивает прототипные свойства в новый объект также. Все не примитивные свойства копируются по ссылке.
R.assoc('c', 3, {a: 1, b: 2}); //=> {a: 1, b: 2, c: 3} assocPath Добавлен в v0.8.0
[Idx] → a → {a} → {a} Idx = String | IntПараметры
-
pathпуть для установки
-
valНовое значение
-
objОбъект для клонирования
Возвращает
- Объект Новый объект, эквивалентный исходному, за исключением указанного пути.
Создаёт поверхностную копию объекта, устанавливая или перезаписывая узлы, необходимые для создания заданного пути, и помещая конкретное значение в конец этого пути. Обратите внимание, что это копирует и сплющивает прототипные свойства в новый объект также. Все не примитивные свойства копируются по ссылке.
См. также dissocPath.
R.assocPath(['a', 'b', 'c'], 42, {a: {b: {c: 0}}}); //=> {a: {b: {c: 42}}}
// Any missing or non-object keys in path will be overridden
R.assocPath(['a', 'b', 'c'], 42, {a: 5}); //=> {a: {b: {c: 42}}} binary Добавлен в v0.2.0
(* → c) → (a, b → c)
Параметры
-
fnФункция для обертывания.
Возвращает
- функция Новая функция, обертывающая `fn`. Новая функция гарантированно имеет арность 2.
Обертывает функцию любой арности (включая нульарную) в функцию, принимающую ровно 2 параметра. Любые дополнительные параметры не будут переданы предоставленной функции.
const takesThreeArgs = function(a, b, c) {
return [a, b, c];
};
takesThreeArgs.length; //=> 3
takesThreeArgs(1, 2, 3); //=> [1, 2, 3]
const takesTwoArgs = R.binary(takesThreeArgs);
takesTwoArgs.length; //=> 2
// Only 2 arguments are passed to the wrapped function
takesTwoArgs(1, 2, 3); //=> [1, 2, undefined] bind Добавлен в v0.6.0
(* → *) → {*} → (* → *) Параметры
-
fnФункция, которую привязать к контексту
-
thisObjКонтекст для привязки
fnк
Возвращает
- функция Функция, которая будет выполняться в контексте `thisObj`.
Создаёт функцию, привязанную к контексту. Примечание: R.bind не предоставляет дополнительные возможности привязки аргументов, как Function.prototype.bind.
См. также partial.
const log = R.bind(console.log, console);
R.pipe(R.assoc('a', 2), R.tap(log), R.assoc('a', 3))({a: 1}); //=> {a: 3}
// logs {a: 2} both Добавлен в v0.12.0
(*… → Boolean) → (*… → Boolean) → (*… → Boolean)
Параметры
-
fПредикат
-
gДругой предикат
Возвращает
- функция функция, которая применяет свои аргументы к `f` и `g` и возвращает логическое И результатов.
Функция, которая вызывает две предоставленные функции и возвращает && результатов. Возвращает результат первой функции, если она ложная, и результат второй функции в противном случае. Обратите внимание, что это выполняется по принципу короткой цепочки, то есть вторая функция не будет вызвана, если первая возвращает ложное значение.
Помимо функций, R.both также принимает любой фэнтези-ланд совместимый прикладной функтор.
См. также and.
const gt10 = R.gt(R.__, 10) const lt20 = R.lt(R.__, 20) const f = R.both(gt10, lt20); f(15); //=> true f(30); //=> false R.both(Maybe.Just(false), Maybe.Just(55)); // => Maybe.Just(false) R.both([false, false, 'a'], [11]); //=> [false, false, 11]
call Добавлен в v0.9.0
(*… → a),*… → a
Параметры
-
fnФункция для применения к остальным аргументам.
-
argsЛюбое количество позиционных аргументов.
Возвращает
- *
Возвращает результат вызова первого аргумента с оставшимися аргументами. Это иногда полезно как функция слияния для R.converge: первое ответвление может сгенерировать функцию, а остальные ответвления генерируют значения, которые будут переданы этой функции в качестве аргументов.
См. также apply.
R.call(R.add, 1, 2); //=> 3
const indentN = R.pipe(R.repeat(' '),
R.join(''),
R.replace(/^(?!$)/gm));
const format = R.converge(R.call, [
R.pipe(R.prop('indent'), indentN),
R.prop('value')
]);
format({indent: 2, value: 'foo\nbar\nbaz\n'}); //=> ' foo\n bar\n baz\n' chain Добавлен в v0.3.0
Chain m => (a → m b) → m a → m b
Параметры
-
fnФункция для отображения
-
listСписок для отображения
Возвращает
- Массив Результат плоского отображения `list` с помощью `fn`
chain отображает функцию по списку и конкатенирует результаты. chain также известен как flatMap в некоторых библиотеках.
Передаёт вызов методу chain второго аргумента, если он есть, в соответствии со спецификацией FantasyLand Chain.
Если второй аргумент — функция, chain(f, g)(x) эквивалентно f(g(x), x).
Действует как трансформер, если в позиции списка указан трансформер.
const duplicate = n => [n, n]; R.chain(duplicate, [1, 2, 3]); //=> [1, 1, 2, 2, 3, 3] R.chain(R.append, R.head)([1, 2, 3]); //=> [1, 2, 3, 1]
clamp Добавлен в v0.20.0
Ord a => a → a → a → a
Параметры
-
minimumНижний предел ограничения (включительно)
-
maximumВерхний предел ограничения (включительно)
-
valueЗначение для ограничения
Возвращает
- Число Возвращает `minimum`, когда `val < minimum`, `maximum`, когда `val > maximum`, в противном случае возвращает `val`
Ограничивает число диапазоном.
Также работает с другими упорядоченными типами, такими как строки и даты.
R.clamp(1, 10, -5) // => 1 R.clamp(1, 10, 15) // => 10 R.clamp(1, 10, 4) // => 4
clone Добавлен в v0.1.0
{*} → {*} Параметры
-
valueОбъект или массив для клонирования
Возвращает
- * Глубокая копия `val`
Создаёт глубокую копию значения, которая может содержать (вложенные) Array и Object , Number , String , Boolean и Date . Function присваиваются по ссылке, а не копируются.
Передаёт вызов методу clone если он присутствует.
const objects = [{}, {}, {}];
const objectsClone = R.clone(objects);
objects === objectsClone; //=> false
objects[0] === objectsClone[0]; //=> false comparator Добавлен в v0.1.0
((a, b) → Boolean) → ((a, b) → Number)
Параметры
-
predФункция-предикат арности два, которая вернёт
trueесли первый аргумент меньше второго,falseв противном случае
Возвращает
- Функция Функция :: a -> b -> Int, которая возвращает `-1`, если a < b, `1`, если b < a, в противном случае `0`
Создаёт функцию сравнения из функции, которая сообщает, меньше ли первый элемент второго.
const byAge = R.comparator((a, b) => a.age < b.age);
const people = [
{ name: 'Emma', age: 70 },
{ name: 'Peter', age: 78 },
{ name: 'Mikhail', age: 62 },
];
const peopleByIncreasingAge = R.sort(byAge, people);
//=> [{ name: 'Mikhail', age: 62 },{ name: 'Emma', age: 70 }, { name: 'Peter', age: 78 }] complement Добавлен в v0.12.0
(*… → *) → (*… → Boolean)
Параметры
-
f
Возвращает
- Функция
Принимает функцию f и возвращает функцию g такую, что если она вызывается с теми же аргументами, когда f возвращает «истинное» значение, g возвращает false, а когда f возвращает «ложное» значение, g возвращает true.
R.complement может быть применено к любому функтору
См. также not.
const isNotNil = R.complement(R.isNil); isNil(null); //=> true isNotNil(null); //=> false isNil(7); //=> false isNotNil(7); //=> true
compose Добавлен в v0.1.0
((y → z), (x → y), …, (o → p), ((a, b, …, n) → o)) → ((a, b, …, n) → z)
Параметры
-
...functionsФункции для композиции
Возвращает
- функция
Выполняет композицию функций справа налево. Последний аргумент может иметь любую арность; остальные аргументы должны быть унарными.
Примечание: Результат compose не автоматически замыкается.
См. также pipe.
const classyGreeting = (firstName, lastName) => "The name's " + lastName + ", " + firstName + " " + lastName
const yellGreeting = R.compose(R.toUpper, classyGreeting);
yellGreeting('James', 'Bond'); //=> "THE NAME'S BOND, JAMES BOND"
R.compose(Math.abs, R.add(1), R.multiply(2))(-4) //=> 7 composeK Добавлен в v0.16.0
Chain m => ((y → m z), (x → m y), …, (a → m b)) → (a → m z)Параметры
-
...functionsФункции для композиции
Возвращает
- функция
Возвращает композицию функций Kleisli справа налево, каждая из которых должна возвращать значение типа, поддерживаемого chain.
R.composeK(h, g, f) эквивалентно R.compose(R.chain(h), R.chain(g), f).
См. также pipeK.
// get :: String -> Object -> Maybe *
const get = R.curry((propName, obj) => Maybe(obj[propName]))
// getStateCode :: Maybe String -> Maybe String
const getStateCode = R.composeK(
R.compose(Maybe.of, R.toUpper),
get('state'),
get('address'),
get('user'),
);
getStateCode({"user":{"address":{"state":"ny"}}}); //=> Maybe.Just("NY")
getStateCode({}); //=> Maybe.Nothing() composeP Добавлен в v0.10.0
((y → Promise z), (x → Promise y), …, (a → Promise b)) → (a → Promise z)Параметры
-
functionsФункции для композиции
Возвращает
- функция
Выполняет композицию справа налево одной или нескольких функций, возвращающих Promise. Последний аргумент может иметь любую арность; остальные аргументы должны быть унарными.
См. также pipeP.
const db = {
users: {
JOE: {
name: 'Joe',
followers: ['STEVE', 'SUZY']
}
}
}
// We'll pretend to do a db lookup which returns a promise
const lookupUser = (userId) => Promise.resolve(db.users[userId])
const lookupFollowers = (user) => Promise.resolve(user.followers)
lookupUser('JOE').then(lookupFollowers)
// followersForUser :: String -> Promise [UserId]
const followersForUser = R.composeP(lookupFollowers, lookupUser);
followersForUser('JOE').then(followers => console.log('Followers:', followers))
// Followers: ["STEVE","SUZY"] composeWith Добавлен в v0.26.0
((* → *), [(y → z), (x → y), …, (o → p), ((a, b, …, n) → o)]) → ((a, b, …, n) → z)
Параметры
-
...functionsФункции для композиции
Возвращает
- функция
Выполняет композицию функций справа налево с использованием трансформирующей функции. Последний аргумент может иметь любую арность; остальные аргументы должны быть унарными.
Примечание: Результат compose не автоматически замыкается. Трансформирующая функция не используется для последнего аргумента.
const composeWhileNotNil = R.composeWith((f, res) => R.isNil(res) ? res : f(res));
composeWhileNotNil([R.inc, R.prop('age')])({age: 1}) //=> 2
composeWhileNotNil([R.inc, R.prop('age')])({}) //=> undefined concat Добавлен в v0.1.0
[a] → [a] → [a]
String → String → StringПараметры
-
firstListПервый список
-
secondListВторой список
Возвращает
- Массив Список, состоящий из элементов `firstList`, за которыми следуют элементы `secondList`.
Возвращает результат конкатенации заданных списков или строк.
Примечание: R.concat ожидает, что оба аргумента будут одного типа, в отличие от родного метода Array.prototype.concat. Он выбросит ошибку, если вы concat массив с не массивом.
Передает метод concat первого аргумента, если он присутствует. Также может конкатенировать два члена совместимого с фантазией семигруппы.
R.concat('ABC', 'DEF'); // 'ABCDEF'
R.concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3]
R.concat([], []); //=> [] cond Добавлен в v0.6.0
[[(*… → Boolean),(*… → *)]] → (*… → *)
Параметры
-
pairsСписок [предикат, преобразователь]
Возвращает
- функция
Возвращает функцию fn, которая encapsulates логику if/else, if/else, .... R.cond принимает список пар [предикат, преобразователь]. Все аргументы fn применяются к каждому предикату по очереди, пока один из них не вернёт «истинное» значение, в этот момент fn возвращает результат применения его аргументов к соответствующему преобразователю. Если ни один из предикатов не соответствует, fn возвращает undefined.
См. также ifElse, unless, when.
const fn = R.cond([
[R.equals(0), R.always('water freezes at 0°C')],
[R.equals(100), R.always('water boils at 100°C')],
[R.T, temp => 'nothing special happens at ' + temp + '°C']
]);
fn(0); //=> 'water freezes at 0°C'
fn(50); //=> 'nothing special happens at 50°C'
fn(100); //=> 'water boils at 100°C' construct Добавлен в v0.1.0
(* → {*}) → (* → {*}) Параметры
-
fnФункция-конструктор для обертывания.
Возвращает
- функция Обёрнутая, замыкаемая функция-конструктор.
Обертывает функцию-конструктор внутри замыкаемой функции, которая может быть вызвана с теми же аргументами и возвращает тот же тип.
См. также invoker.
// Constructor function
function Animal(kind) {
this.kind = kind;
};
Animal.prototype.sighting = function() {
return "It's a " + this.kind + "!";
}
const AnimalConstructor = R.construct(Animal)
// Notice we no longer need the 'new' keyword:
AnimalConstructor('Pig'); //=> {"kind": "Pig", "sighting": function (){...}};
const animalTypes = ["Lion", "Tiger", "Bear"];
const animalSighting = R.invoker(0, 'sighting');
const sightNewAnimal = R.compose(animalSighting, AnimalConstructor);
R.map(sightNewAnimal, animalTypes); //=> ["It's a Lion!", "It's a Tiger!", "It's a Bear!"] constructN Добавлен в v0.4.0
Number → (* → {*}) → (* → {*}) Параметры
-
nАрность функции-конструктора.
-
FnФункция-конструктор для обертывания.
Возвращает
- функция Обёрнутая, замыкаемая функция-конструктор.
Обертывает функцию-конструктор внутри замыкаемой функции, которая может быть вызвана с теми же аргументами и возвращает тот же тип. Арность возвращаемой функции задаётся для использования функций-конструкторов с переменной арностью.
// Variadic Constructor function
function Salad() {
this.ingredients = arguments;
}
Salad.prototype.recipe = function() {
const instructions = R.map(ingredient => 'Add a dollop of ' + ingredient, this.ingredients);
return R.join('\n', instructions);
};
const ThreeLayerSalad = R.constructN(3, Salad);
// Notice we no longer need the 'new' keyword, and the constructor is curried for 3 arguments.
const salad = ThreeLayerSalad('Mayonnaise')('Potato Chips')('Ketchup');
console.log(salad.recipe());
// Add a dollop of Mayonnaise
// Add a dollop of Potato Chips
// Add a dollop of Ketchup contains Добавлен в v0.1.0
a → [a] → BooleanПараметры
-
aЭлемент для сравнения.
-
listМассив для рассмотрения.
Возвращает
- Булево `true`, если эквивалентный элемент находится в списке, `false` в противном случае.
Возвращает true если заданное значение равно, в терминах R.equals, по крайней мере, одному элементу заданного списка; false в противном случае. Работает также со строками.
См. также includes.
R.contains(3, [1, 2, 3]); //=> true
R.contains(4, [1, 2, 3]); //=> false
R.contains({ name: 'Fred' }, [{ name: 'Fred' }]); //=> true
R.contains([42], [[42]]); //=> true
R.contains('ba', 'banana'); //=>true converge Добавлен в v0.4.2
((x1, x2, …) → z) → [((a, b, …) → x1), ((a, b, …) → x2), …] → (a → b → … → z)
Параметры
-
afterФункция.
afterбудет вызываться с возвращаемыми значениямиfn1иfn2в качестве аргументов. -
functionsСписок функций.
Возвращает
- функция Новая функция.
Принимает сходящуюся функцию и список разветвляющихся функций и возвращает новую функцию. Арность новой функции такая же, как арность самой длинной разветвляющейся функции. При вызове эта новая функция применяется к некоторым аргументам, и каждая разветвляющаяся функция применяется к тем же аргументам. Результаты каждой разветвляющейся функции передаются в сходящуюся функцию для получения возвращаемого значения.
См. также useWith.
const average = R.converge(R.divide, [R.sum, R.length])
average([1, 2, 3, 4, 5, 6, 7]) //=> 4
const strangeConcat = R.converge(R.concat, [R.toUpper, R.toLower])
strangeConcat("Yodel") //=> "YODELyodel" countBy Добавлен в v0.1.0
(a → String) → [a] → {*} Параметры
-
fnФункция для сопоставления значений с ключами.
-
listСписок для подсчета элементов.
Возвращает
- Объект Объект, сопоставляющий ключи с количеством вхождений в списке.
Подсчитывает элементы списка в зависимости от того, сколько совпадает с каждым значением ключа, сгенерированным предоставленной функцией. Возвращает объект, сопоставляющий ключи, полученные из fn, с количеством вхождений в списке. Обратите внимание, что все ключи приведены к строкам из-за работы JavaScript-объектов.
Выступает в качестве трансформера, если в списке указан трансформер.
const numbers = [1.0, 1.1, 1.2, 2.0, 3.0, 2.2];
R.countBy(Math.floor)(numbers); //=> {'1': 3, '2': 2, '3': 1}
const letters = ['a', 'b', 'A', 'a', 'B', 'c'];
R.countBy(R.toLower)(letters); //=> {'a': 3, 'b': 2, 'c': 1} curry Добавлен в v0.1.0
(* → a) → (* → a)
Параметры
-
fnФункция для замыкания.
Возвращает
- функция Новая замыкаемая функция.
Возвращает замыкаемый эквивалент предоставленной функции. Замыкаемая функция обладает двумя необычными возможностями. Во-первых, её аргументы не обязательно должны быть предоставлены по одному. Если f — это троичная функция, а g — R.curry(f), следующие выражения эквивалентны:
g(1)(2)(3)g(1)(2, 3)g(1, 2)(3)g(1, 2, 3)
Во-вторых, специальное значение-заполнитель R.__ может использоваться для указания «пропусков», позволяя частично применить любые комбинации аргументов, независимо от их позиций. Если g — это, как и выше, а _ — R.__, следующие выражения эквивалентны:
g(1, 2, 3)g(_, 2, 3)(1)g(_, _, 3)(1)(2)g(_, _, 3)(1, 2)g(_, 2)(1)(3)g(_, 2)(1, 3)g(_, 2)(_, 3)(1)
const addFourNumbers = (a, b, c, d) => a + b + c + d; const curriedAddFourNumbers = R.curry(addFourNumbers); const f = curriedAddFourNumbers(1, 2); const g = f(3); g(4); //=> 10
curryN Добавлен в v0.5.0
Number → (* → a) → (* → a)
Параметры
-
lengthАрность возвращаемой функции.
-
fnФункция для замыкания.
Возвращает
- функция Новая замыкаемая функция.
Возвращает каррированный эквивалент предоставленной функции с указанной арностью. Каррированная функция обладает двумя необычными возможностями. Во-первых, её аргументы не обязательно предоставляются по одному. Если g является R.curryN(3, f), следующие выражения эквивалентны:
g(1)(2)(3)g(1)(2, 3)g(1, 2)(3)g(1, 2, 3)
Во-вторых, специальное значение-заполнитель R.__ может быть использовано для обозначения «пропусков», позволяя частично применить любые комбинации аргументов независимо от их позиций. Если g является указанным выше, а _ равно R.__, следующие выражения эквивалентны:
g(1, 2, 3)g(_, 2, 3)(1)g(_, _, 3)(1)(2)g(_, _, 3)(1, 2)g(_, 2)(1)(3)g(_, 2)(1, 3)g(_, 2)(_, 3)(1)
См. также curry.
const sumArgs = (...args) => R.sum(args); const curriedAddFourNumbers = R.curryN(4, sumArgs); const f = curriedAddFourNumbers(1, 2); const g = f(3); g(4); //=> 10
dec Добавлен в v0.9.0
Number → Number
Параметры
-
n
Возвращаемое значение
- Число n - 1
Декрементирует свой аргумент.
См. также inc.
R.dec(42); //=> 41
defaultTo Добавлен в v0.10.0
a → b → a | b
Параметры
-
defaultЗначение по умолчанию.
-
valvalбудет возвращено вместоdefault, еслиvalне являетсяnull,undefinedилиNaN.
Возвращаемое значение
- * Второе значение, если оно не `null`, `undefined` или `NaN`, в противном случае - значение по умолчанию
Возвращает второй аргумент, если он не null, undefined или NaN; в противном случае возвращается первый аргумент.
const defaultTo42 = R.defaultTo(42);
defaultTo42(null); //=> 42
defaultTo42(undefined); //=> 42
defaultTo42(false); //=> false
defaultTo42('Ramda'); //=> 'Ramda'
// parseInt('string') results in NaN
defaultTo42(parseInt('string')); //=> 42 descend Добавлен в v0.23.0
Ord b => (a → b) → a → a → Number
Параметры
-
fnФункция арности один, возвращающая значение, которое можно сравнить
-
aПервый элемент для сравнения.
-
bВторой элемент для сравнения.
Возвращаемое значение
- Число `-1`, если fn(a) > fn(b), `1`, если fn(b) > fn(a), в противном случае `0`
Создаёт функцию сравнения по убыванию из функции, возвращающей значение, которое можно сравнить с < и >.
См. также ascend.
const byAge = R.descend(R.prop('age'));
const people = [
{ name: 'Emma', age: 70 },
{ name: 'Peter', age: 78 },
{ name: 'Mikhail', age: 62 },
];
const peopleByOldestFirst = R.sort(byAge, people);
//=> [{ name: 'Peter', age: 78 }, { name: 'Emma', age: 70 }, { name: 'Mikhail', age: 62 }] difference Добавлен в v0.1.0
[*] → [*] → [*]
Параметры
-
list1Первый список.
-
list2Второй список.
Возвращаемое значение
- Массив Элементы из `list1`, которых нет в `list2`.
Находит множество (т.е. без дубликатов) всех элементов в первом списке, которых нет во втором списке. Объекты и массивы сравниваются по равенству значений, а не по ссылке.
См. также differenceWith, symmetricDifference, symmetricDifferenceWith, without.
R.difference([1,2,3,4], [7,6,5,4,3]); //=> [1,2]
R.difference([7,6,5,4,3], [1,2,3,4]); //=> [7,6,5]
R.difference([{a: 1}, {b: 2}], [{a: 1}, {c: 3}]) //=> [{b: 2}] differenceWith Добавлен в v0.1.0
((a, a) → Boolean) → [a] → [a] → [a]
Параметры
-
predПредикат для проверки равенства двух элементов.
-
list1Первый список.
-
list2Второй список.
Возвращаемое значение
- Массив Элементы из `list1`, которых нет в `list2`.
Находит множество (т.е. без дубликатов) всех элементов в первом списке, которых нет во втором списке. Дублирование определяется в соответствии со значением, возвращаемым при применении предоставленного предиката к двум элементам списка.
См. также difference, symmetricDifference, symmetricDifferenceWith.
const cmp = (x, y) => x.a === y.a;
const l1 = [{a: 1}, {a: 2}, {a: 3}];
const l2 = [{a: 3}, {a: 4}];
R.differenceWith(cmp, l1, l2); //=> [{a: 1}, {a: 2}] dissoc Добавлен в v0.10.0
String → {k: v} → {k: v} Параметры
-
propИмя свойства для исключения
-
objОбъект для клонирования
Возвращаемое значение
- Объект Новый объект, эквивалентный исходному, но без указанного свойства
Возвращает новый объект, не содержащий свойства prop.
R.dissoc('b', {a: 1, b: 2, c: 3}); //=> {a: 1, c: 3} dissocPath Добавлен в v0.11.0
[Idx] → {k: v} → {k: v} Idx = String | IntПараметры
-
pathПуть к значению для удаления
-
objОбъект для клонирования
Возвращаемое значение
- Объект Новый объект без свойства по указанному пути
Создаёт полную копию объекта, исключая свойство по заданному пути. Обратите внимание, что это также копирует и сглаживает свойства прототипа в новый объект. Все свойства, отличные от примитивных, копируются по ссылке.
См. также assocPath.
R.dissocPath(['a', 'b', 'c'], {a: {b: {c: 42}}}); //=> {a: {b: {}}} divide Добавлен в v0.1.0
Number → Number → Number
Параметры
-
aПервое значение.
-
bВторое значение.
Возвращаемое значение
- Число Результат `a / b`.
Делит два числа. Эквивалентно a / b.
См. также multiply.
R.divide(71, 100); //=> 0.71 const half = R.divide(R.__, 2); half(42); //=> 21 const reciprocal = R.divide(1); reciprocal(4); //=> 0.25
drop Добавлен в v0.1.0
Number → [a] → [a]
Number → String → StringПараметры
-
n -
list
Возвращаемое значение
- * Копия списка без первых `n` элементов
Возвращает все элементы списка, строки или трансформера (или объекта с методом drop) за исключением первых `n` элементов.
Выполняет вызов метода drop второго аргумента, если он присутствует.
См. также take, transduce, dropLast, dropWhile.
R.drop(1, ['foo', 'bar', 'baz']); //=> ['bar', 'baz'] R.drop(2, ['foo', 'bar', 'baz']); //=> ['baz'] R.drop(3, ['foo', 'bar', 'baz']); //=> [] R.drop(4, ['foo', 'bar', 'baz']); //=> [] R.drop(3, 'ramda'); //=> 'da'
dropLast Добавлен в v0.16.0
Number → [a] → [a]
Number → String → StringПараметры
-
nКоличество элементов списка, которые нужно пропустить.
-
listСписок элементов для рассмотрения.
Возвращаемое значение
- Массив Копия списка, содержащая только первые `list.length - n` элементов
Возвращает список, содержащий все элементы, кроме последних `n` элементов, данного списка.
Выступает в роли трансформера, если в позиции списка указан трансформер.
См. также takeLast, drop, dropWhile, dropLastWhile.
R.dropLast(1, ['foo', 'bar', 'baz']); //=> ['foo', 'bar'] R.dropLast(2, ['foo', 'bar', 'baz']); //=> ['foo'] R.dropLast(3, ['foo', 'bar', 'baz']); //=> [] R.dropLast(4, ['foo', 'bar', 'baz']); //=> [] R.dropLast(3, 'ramda'); //=> 'ra'
dropLastWhile Добавлен в v0.16.0
(a → Boolean) → [a] → [a]
(a → Boolean) → String → StringПараметры
-
predicateФункция, вызываемая для каждого элемента.
-
xsКоллекция для итерации.
Возвращаемое значение
- Массив Новый массив без конечных элементов, возвращающих `ложные` значения от предиката.
Возвращает новый список, исключая все конечные элементы данного списка, которые удовлетворяют предоставленной функции предиката. Она применяет каждую функцию справа к предоставленной функции предиката, пропускает элементы, пока функция предиката не вернёт falsy значение. Функция предиката применяется к одному аргументу: (значение).
Выступает в роли трансформера, если в позиции списка указан трансформер.
См. также takeLastWhile, addIndex, drop, dropWhile.
const lteThree = x => x <= 3; R.dropLastWhile(lteThree, [1, 2, 3, 4, 3, 2, 1]); //=> [1, 2, 3, 4] R.dropLastWhile(x => x !== 'd' , 'Ramda'); //=> 'Ramd'
dropRepeats Добавлен в v0.14.0
[a] → [a]
Параметры
-
listМассив для рассмотрения.
Возвращаемое значение
- Массив `list` без повторяющихся элементов.
Возвращает новый список без последовательно повторяющихся элементов. R.equals используется для определения равенства.
Выступает в роли трансформера, если в позиции списка указан трансформер.
См. также transduce.
R.dropRepeats([1, 1, 1, 2, 3, 4, 4, 2, 2]); //=> [1, 2, 3, 4, 2]
dropRepeatsWith Добавлен в v0.14.0
((a, a) → Boolean) → [a] → [a]
Параметры
-
predПредикат для проверки равенства двух элементов.
-
listМассив для рассмотрения.
Возвращаемое значение
- Массив `list` без повторяющихся элементов.
Возвращает новый список без последовательно повторяющихся элементов. Равенство определяется при применении предоставленного предиката к каждой паре последовательных элементов. Первый элемент в серии равных элементов сохраняется.
Выступает в качестве преобразователя, если преобразователь указан в позиции списка.
См. также transduce.
const l = [1, -1, 1, 3, 4, -4, -4, -5, 5, 3, 3]; R.dropRepeatsWith(R.eqBy(Math.abs), l); //=> [1, 3, 4, -5, 3]
dropWhile Добавлен в v0.9.0
(a → Boolean) → [a] → [a]
(a → Boolean) → String → StringПараметры
-
fnФункция, вызываемая на каждой итерации.
-
xsКоллекция для итерации.
Возвращаемое значение
- Массив Новый массив.
Возвращает новый список, исключая ведущие элементы данного списка, удовлетворяющие функции-предикату. Он передает каждое значение функции-предикату, пропускает элементы, пока функция-предикат возвращает true. Функция-предикат применяется к одному аргументу: (значение).
Пересылает вызов методу dropWhile второго аргумента, если он присутствует.
Выступает в качестве преобразователя, если преобразователь указан в позиции списка.
См. также takeWhile, transduce, addIndex.
const lteTwo = x => x <= 2; R.dropWhile(lteTwo, [1, 2, 3, 4, 3, 2, 1]); //=> [3, 4, 3, 2, 1] R.dropWhile(x => x !== 'd' , 'Ramda'); //=> 'da'
either Добавлен в v0.12.0
(*… → Boolean) → (*… → Boolean) → (*… → Boolean)
Параметры
-
fпредикат
-
gдругой предикат
Возвращаемое значение
- функция функция, которая применяет свои аргументы к `f` и `g` и возвращает результат `||` их результатов.
Функция, которая выполняет вызовы двух функций в операции ||, возвращая результат первой функции, если она истинна, и результат второй функции в противном случае. Обратите внимание, что эта функция короткая, то есть вторая функция не будет вызвана, если первая вернёт истинное значение.
Помимо функций, R.either также принимает любой совместимый с фантазией прикладной функционал.
См. также or.
const gt10 = x => x > 10; const even = x => x % 2 === 0; const f = R.either(gt10, even); f(101); //=> true f(8); //=> true R.either(Maybe.Just(false), Maybe.Just(55)); // => Maybe.Just(55) R.either([false, false, 'a'], [11]) // => [11, 11, "a"]
empty Добавлен в v0.3.0
a → a
Параметры
-
x
Возвращаемое значение
- *
Возвращает пустое значение типа своего аргумента. Ramda определяет пустое значение для массива ([]), объекта ({}), строки ('') и Arguments. Другие типы поддерживаются, если они определяют <Type>.empty, <Type>.prototype.empty или реализуют спецификацию FantasyLand Monoid.
Пересылает вызов методу empty первого аргумента, если он присутствует.
R.empty(Just(42)); //=> Nothing()
R.empty([1, 2, 3]); //=> []
R.empty('unicorns'); //=> ''
R.empty({x: 1, y: 2}); //=> {} endsWith Добавлен в v0.24.0
[a] → [a] → Boolean
String → String → BooleanПараметры
-
suffix -
list
Возвращаемое значение
- Булево
Проверяет, заканчивается ли список указанным подсписком.
Аналогично, проверяет, заканчивается ли строка указанной подстрокой.
См. также startsWith.
R.endsWith('c', 'abc') //=> true
R.endsWith('b', 'abc') //=> false
R.endsWith(['c'], ['a', 'b', 'c']) //=> true
R.endsWith(['b'], ['a', 'b', 'c']) //=> false eqBy Добавлен в v0.18.0
(a → b) → a → a → Boolean
Параметры
-
f -
x -
y
Возвращаемое значение
- Булево
Принимает функцию и два значения в её области определения и возвращает true , если значения отображаются на одно и то же значение в области значений; false в противном случае.
R.eqBy(Math.abs, 5, -5); //=> true
eqProps Добавлен в v0.1.0
k → {k: v} → {k: v} → Boolean Параметры
-
propИмя свойства для сравнения
-
obj1 -
obj2
Возвращаемое значение
- Булево
Указывает, имеют ли два объекта одинаковое значение, в терминах R.equals, для указанного свойства. Полезно как предикатная функция с замыканием.
const o1 = { a: 1, b: 2, c: 3, d: 4 };
const o2 = { a: 10, b: 20, c: 3, d: 40 };
R.eqProps('a', o1, o2); //=> false
R.eqProps('c', o1, o2); //=> true equals Добавлен в v0.15.0
a → b → Boolean
Параметры
-
a -
b
Возвращаемое значение
- Булево
Возвращает true , если его аргументы эквивалентны, false в противном случае. Обрабатывает циклические структуры данных.
Симметрично пересылает вызов методам equals обоих аргументов, если они присутствуют.
R.equals(1, 1); //=> true
R.equals(1, '1'); //=> false
R.equals([1, 2, 3], [1, 2, 3]); //=> true
const a = {}; a.v = a;
const b = {}; b.v = b;
R.equals(a, b); //=> true evolve Добавлен в v0.9.0
{k: (v → v)} → {k: v} → {k: v} Параметры
-
transformationsОбъект, определяющий функции преобразования, которые необходимо применить к объекту.
-
objectОбъект, который необходимо преобразовать.
Возвращаемое значение
- Объект Преобразованный объект.
Создаёт новый объект путём рекурсивного преобразования поверхностной копии object, в соответствии с функциями transformation. Все не примитивные свойства копируются по ссылке.
Функция transformation не будет вызвана, если соответствующий ключ не существует в преобразованном объекте.
const tomato = {firstName: ' Tomato ', data: {elapsed: 100, remaining: 1400}, id:123};
const transformations = {
firstName: R.trim,
lastName: R.trim, // Will not get invoked.
data: {elapsed: R.add(1), remaining: R.add(-1)}
};
R.evolve(transformations, tomato); //=> {firstName: 'Tomato', data: {elapsed: 101, remaining: 1399}, id:123} F Добавлен в v0.9.0
* → Boolean
Параметры
Возвращаемое значение
- Булево
Функция, которая всегда возвращает false. Любые переданные аргументы игнорируются.
См. также T.
R.F(); //=> false
filter Добавлен в v0.1.0
Filterable f => (a → Boolean) → f a → f a
Параметры
-
pred -
filterable
Возвращаемое значение
- Массив Фильтруемый
Принимает предикат и Filterable, и возвращает новый фильтруемый объект того же типа, содержащий элементы данного фильтруемого объекта, удовлетворяющие данному предикату. Фильтруемые объекты включают обычные объекты или любые объекты, имеющие метод фильтра, такой как Array.
Пересылает вызов методу filter второго аргумента, если он присутствует.
Выступает в качестве преобразователя, если преобразователь указан в позиции списка.
См. также reject, transduce, addIndex.
const isEven = n => n % 2 === 0;
R.filter(isEven, [1, 2, 3, 4]); //=> [2, 4]
R.filter(isEven, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4} find Добавлен в v0.1.0
(a → Boolean) → [a] → a | undefined
Параметры
-
fnФункция-предикат, используемая для определения, является ли элемент нужным.
-
listМассив для рассмотрения.
Возвращаемое значение
- Объект Найденный элемент или `undefined`.
Возвращает первый элемент списка, который соответствует предикату, или undefined , если ни один элемент не соответствует.
Пересылает вызов методу find второго аргумента, если он присутствует.
Выступает в качестве преобразователя, если преобразователь указан в позиции списка.
См. также transduce.
const xs = [{a: 1}, {a: 2}, {a: 3}];
R.find(R.propEq('a', 2))(xs); //=> {a: 2}
R.find(R.propEq('a', 4))(xs); //=> undefined findIndex Добавлен в v0.1.1
(a → Boolean) → [a] → Number
Параметры
-
fnФункция-предикат, используемая для определения, является ли элемент нужным.
-
listМассив для рассмотрения.
Возвращаемое значение
- Число Индекс найденного элемента или `-1`.
Возвращает индекс первого элемента списка, который соответствует предикату, или -1 , если ни один элемент не соответствует.
Выступает в качестве преобразователя, если преобразователь указан в позиции списка.
См. также transduce.
const xs = [{a: 1}, {a: 2}, {a: 3}];
R.findIndex(R.propEq('a', 2))(xs); //=> 1
R.findIndex(R.propEq('a', 4))(xs); //=> -1 findLast Добавлен в v0.1.1
(a → Boolean) → [a] → a | undefined
Параметры
-
fnФункция-предикат, используемая для определения, является ли элемент нужным.
-
listМассив для рассмотрения.
Возвращаемое значение
- Объект Найденный элемент или `undefined`.
Возвращает последний элемент списка, который соответствует предикату, или undefined , если ни один элемент не соответствует.
Выступает в качестве преобразователя, если преобразователь указан в позиции списка.
См. также transduce.
const xs = [{a: 1, b: 0}, {a:1, b: 1}];
R.findLast(R.propEq('a', 1))(xs); //=> {a: 1, b: 1}
R.findLast(R.propEq('a', 4))(xs); //=> undefined findLastIndex Добавлен в v0.1.1
(a → Boolean) → [a] → Number
Параметры
-
fnФункция-предикат, используемая для определения, является ли элемент нужным.
-
listМассив для рассмотрения.
Возвращаемое значение
- Число Индекс найденного элемента или `-1`.
Возвращает индекс последнего элемента списка, который соответствует предикату, или -1 , если ни один элемент не соответствует.
Выступает в качестве преобразователя, если преобразователь указан в позиции списка.
См. также transduce.
const xs = [{a: 1, b: 0}, {a:1, b: 1}];
R.findLastIndex(R.propEq('a', 1))(xs); //=> 1
R.findLastIndex(R.propEq('a', 4))(xs); //=> -1 flatten Добавлен в v0.1.0
[a] → [b]
Параметры
-
listМассив для рассмотрения.
Возвращаемое значение
- Массив Разворачиваемый список.
Возвращает новый список, извлекая каждый элемент из него (и все его подмассивы) и помещая их в новый массив, в глубину.
См. также unnest.
R.flatten([1, 2, [3, 4], 5, [6, [7, 8, [9, [10, 11], 12]]]]); //=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
flip Добавлен в v0.1.0
((a, b, c, …) → z) → (b → a → c → … → z)
Параметры
-
fnФункция, которая вызывается с переставленными первыми двумя параметрами.
Возвращает
- * Результат вызова `fn` с переставленными первыми двумя параметрами.
Возвращает новую функцию, очень похожую на предоставленную, за исключением того, что порядок первых двух аргументов изменён.
const mergeThree = (a, b, c) => [].concat(a, b, c); mergeThree(1, 2, 3); //=> [1, 2, 3] R.flip(mergeThree)(1, 2, 3); //=> [2, 1, 3]
forEach Добавлена в v0.1.1
(a → *) → [a] → [a]
Параметры
-
fnФункция, которая должна быть вызвана. Принимает один аргумент,
value. -
listСписок, по которому будет происходить итерация.
Возвращает
- Array Исходный список.
Итерирует по входному list, вызывая предоставленную функцию fn для каждого элемента в списке.
fn принимает один аргумент: (значение).
Примечание: R.forEach не пропускает удалённые или не назначенные индексы (разреженные массивы), в отличие от встроенного метода Array.prototype.forEach. Более подробная информация об этом поведении доступна по адресу: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach#Description
Также обратите внимание, что, в отличие от Array.prototype.forEach, Ramda's forEach возвращает исходный массив. В некоторых библиотеках эта функция называется each.
Вызывает метод forEach второго аргумента, если он присутствует.
См. также addIndex.
const printXPlusFive = x => console.log(x + 5); R.forEach(printXPlusFive, [1, 2, 3]); //=> [1, 2, 3] // logs 6 // logs 7 // logs 8
forEachObjIndexed Добавлена в v0.23.0
((a, String, StrMap a) → Any) → StrMap a → StrMap a
Параметры
-
fnФункция, которая должна быть вызвана. Принимает три аргумента,
value,key,obj. -
objОбъект, по которому будет происходить итерация.
Возвращает
- Object Исходный объект.
Итерирует по входному object, вызывая предоставленную функцию fn для каждой пары ключ-значение в объекте.
fn принимает три аргумента: (значение, ключ, объект).
const printKeyConcatValue = (value, key) => console.log(key + ':' + value);
R.forEachObjIndexed(printKeyConcatValue, {x: 1, y: 2}); //=> {x: 1, y: 2}
// logs x:1
// logs y:2 fromPairs Добавлена в v0.3.0
[[k,v]] → {k: v} Параметры
-
pairsМассив пар из двух элементов, которые будут ключами и значениями выходного объекта.
Возвращает
- Object Объект, созданный путём сопоставления `ключа` и `значения`.
Создаёт новый объект из списка пар ключ-значение. Если ключ встречается в нескольких парах, в объекте будет включена правая пара.
R.fromPairs([['a', 1], ['b', 2], ['c', 3]]); //=> {a: 1, b: 2, c: 3} groupBy Добавлена в v0.1.0
(a → String) → [a] → {String: [a]} Параметры
-
fnФункция :: a -> String
-
listМассив для группирования
Возвращает
- Object Объект с результатом `fn` в качестве ключей, сопоставленных с массивами элементов, которые произвели этот ключ при передаче в `fn`.
Разбивает список на подсписки, хранящиеся в объекте, на основе результата вызова функции, возвращающей строку, для каждого элемента, и группирует результаты в соответствии с возвращаемыми значениями.
Вызывает метод groupBy второго аргумента, если он присутствует.
Действует как преобразователь, если преобразователь указан в позиции списка.
См. также reduceBy, transduce.
const byGrade = R.groupBy(function(student) {
const score = student.score;
return score < 65 ? 'F' :
score < 70 ? 'D' :
score < 80 ? 'C' :
score < 90 ? 'B' : 'A';
});
const students = [{name: 'Abby', score: 84},
{name: 'Eddy', score: 58},
// ...
{name: 'Jack', score: 69}];
byGrade(students);
// {
// 'A': [{name: 'Dianne', score: 99}],
// 'B': [{name: 'Abby', score: 84}]
// // ...,
// 'F': [{name: 'Eddy', score: 58}]
// } groupWith Добавлена в v0.21.0
((a, a) → Boolean) → [a] → [[a]]
Параметры
-
fnФункция для определения того, должны ли два заданных (смежных) элемента находиться в одной группе
-
listМассив для группирования. Также принимает строку, которая будет обрабатываться как список символов.
Возвращает
- List Список, содержащий подсписки элементов, конкатенации которых равны исходному списку.
Принимает список и возвращает список списков, где элементы каждого подсписка удовлетворяют парному сравниванию согласно предоставленной функции. Только смежные элементы передаются в функцию сравнения.
R.groupWith(R.equals, [0, 1, 1, 2, 3, 5, 8, 13, 21]) //=> [[0], [1, 1], [2], [3], [5], [8], [13], [21]] R.groupWith((a, b) => a + 1 === b, [0, 1, 1, 2, 3, 5, 8, 13, 21]) //=> [[0, 1], [1, 2, 3], [5], [8], [13], [21]] R.groupWith((a, b) => a % 2 === b % 2, [0, 1, 1, 2, 3, 5, 8, 13, 21]) //=> [[0], [1, 1], [2], [3, 5], [8], [13, 21]] R.groupWith(R.eqBy(isVowel), 'aestiou') //=> ['ae', 'st', 'iou']
gt Добавлена в v0.1.0
Ord a => a → a → Boolean
Параметры
-
a -
b
Возвращает
- Boolean
Возвращает true если первый аргумент больше второго; false в противном случае.
См. также lt.
R.gt(2, 1); //=> true
R.gt(2, 2); //=> false
R.gt(2, 3); //=> false
R.gt('a', 'z'); //=> false
R.gt('z', 'a'); //=> true gte Добавлена в v0.1.0
Ord a => a → a → Boolean
Параметры
-
a -
b
Возвращает
- Boolean
Возвращает true если первый аргумент больше или равен второму; false в противном случае.
См. также lte.
R.gte(2, 1); //=> true
R.gte(2, 2); //=> true
R.gte(2, 3); //=> false
R.gte('a', 'z'); //=> false
R.gte('z', 'a'); //=> true has Добавлена в v0.7.0
s → {s: x} → Boolean Параметры
-
propИмя свойства, которое нужно проверить.
-
objОбъект, который нужно проверить.
Возвращает
- Boolean Существует ли свойство.
Возвращает true, если у объекта есть собственное свойство с указанным именем, false в противном случае.
const hasName = R.has('name');
hasName({name: 'alice'}); //=> true
hasName({name: 'bob'}); //=> true
hasName({}); //=> false
const point = {x: 0, y: 0};
const pointHas = R.has(R.__, point);
pointHas('x'); //=> true
pointHas('y'); //=> true
pointHas('z'); //=> false hasIn Добавлена в v0.7.0
s → {s: x} → Boolean Параметры
-
propИмя свойства, которое нужно проверить.
-
objОбъект, который нужно проверить.
Возвращает
- Boolean Существует ли свойство.
Возвращает true, если у объекта или его цепочки прототипов есть свойство с указанным именем, false в противном случае.
function Rectangle(width, height) {
this.width = width;
this.height = height;
}
Rectangle.prototype.area = function() {
return this.width * this.height;
};
const square = new Rectangle(2, 2);
R.hasIn('width', square); //=> true
R.hasIn('area', square); //=> true hasPath Добавлена в v0.26.0
[Idx] → {a} → Boolean Idx = String | IntПараметры
-
pathПуть для использования.
-
objОбъект, в котором нужно проверить путь.
Возвращает
- Boolean Существует ли путь.
Возвращает true, если путь существует в объекте. Проверяются только собственные свойства объекта.
См. также has.
R.hasPath(['a', 'b'], {a: {b: 2}}); // => true
R.hasPath(['a', 'b'], {a: {b: undefined}}); // => true
R.hasPath(['a', 'b'], {a: {c: 2}}); // => false
R.hasPath(['a', 'b'], {}); // => false head Добавлена в v0.1.0
[a] → a | Undefined
String → StringПараметры
-
list
Возвращает
- *
Возвращает первый элемент заданного списка или строки. В некоторых библиотеках эта функция называется first.
R.head(['fi', 'fo', 'fum']); //=> 'fi'
R.head([]); //=> undefined
R.head('abc'); //=> 'a'
R.head(''); //=> '' identical Добавлена в v0.15.0
a → a → Boolean
Параметры
-
a -
b
Возвращает
- Boolean
Возвращает true, если её аргументы идентичны, false в противном случае. Значения идентичны, если они ссылаются на одну и ту же память. NaN идентично NaN; 0 и -0 не идентичны.
Обратите внимание, что это всего лишь перегруженная версия ES6 Object.is.
const o = {};
R.identical(o, o); //=> true
R.identical(1, 1); //=> true
R.identical(1, '1'); //=> false
R.identical([], []); //=> false
R.identical(0, -0); //=> false
R.identical(NaN, NaN); //=> true identity Добавлена в v0.1.0
a → a
Параметры
-
xВозвращаемое значение.
Возвращает
- * Входное значение, `x`.
Функция, которая ничего не делает, кроме как возвращает переданный ей параметр. Подходит в качестве значения по умолчанию или функции-заполнителя.
R.identity(1); //=> 1
const obj = {};
R.identity(obj) === obj; //=> true ifElse Добавлена в v0.8.0
(*… → Boolean) → (*… → *) → (*… → *) → (*… → *)
Параметры
-
conditionФункция-предикат
-
onTrueФункция, которая вызывается, когда
conditionоценивается как истинное значение. -
onFalseФункция, которая вызывается, когда
conditionоценивается как ложное значение.
Возвращает
- function Новая функция, которая обработает либо функцию `onTrue`, либо функцию `onFalse`, в зависимости от результата предиката `condition`.
Создаёт функцию, которая обработает либо функцию onTrue, либо функцию onFalse, в зависимости от результата предиката condition.
const incCount = R.ifElse(
R.has('count'),
R.over(R.lensProp('count'), R.inc),
R.assoc('count', 1)
);
incCount({}); //=> { count: 1 }
incCount({ count: 1 }); //=> { count: 2 } inc Добавлена в v0.9.0
Number → Number
Параметры
-
n
Возвращает
- Number n + 1
Увеличивает свой аргумент.
См. также dec.
R.inc(42); //=> 43
includes Added in v0.26.0
a → [a] → Boolean
Parameters
-
aЭлемент для сравнения.
-
listМассив для проверки.
Returns
- Boolean `true`, если эквивалентный элемент присутствует в списке, иначе `false`.
Возвращает true , если указанное значение равно, в смысле R.equals, по крайней мере, одному элементу заданного списка; false в противном случае. Также работает со строками.
См. также any.
R.includes(3, [1, 2, 3]); //=> true
R.includes(4, [1, 2, 3]); //=> false
R.includes({ name: 'Fred' }, [{ name: 'Fred' }]); //=> true
R.includes([42], [[42]]); //=> true
R.includes('ba', 'banana'); //=>true indexBy Added in v0.19.0
(a → String) → [{k: v}] → {k: {k: v}} Parameters
-
fnФункция :: a -> String
-
arrayМассив объектов для индексирования
Returns
- Object Объект, индексирующий каждый элемент массива по заданному свойству.
Преобразует список объектов в объект, индексирующий объекты по заданному ключу, используя функцию для генерации ключа. Обратите внимание, что если несколько объектов генерируют одно и то же значение для ключа индексирования, то только последнее значение будет включено в сгенерированный объект.
Действует как преобразователь, если в списке задан преобразователь.
const list = [{id: 'xyz', title: 'A'}, {id: 'abc', title: 'B'}];
R.indexBy(R.prop('id'), list);
//=> {abc: {id: 'abc', title: 'B'}, xyz: {id: 'xyz', title: 'A'}} indexOf Added in v0.1.0
a → [a] → Number
Parameters
-
targetЭлемент для поиска.
-
xsМассив для поиска.
Returns
- Number индекс целевого элемента, или -1, если целевой элемент не найден.
Возвращает позицию первого вхождения элемента в массив или -1, если элемент не содержится в массиве. Для определения равенства используется R.equals.
См. также lastIndexOf.
R.indexOf(3, [1,2,3,4]); //=> 2 R.indexOf(10, [1,2,3,4]); //=> -1
init Added in v0.9.0
[a] → [a]
String → StringParameters
-
list
Returns
- *
Возвращает все элементы списка или строки, кроме последнего.
R.init([1, 2, 3]); //=> [1, 2]
R.init([1, 2]); //=> [1]
R.init([1]); //=> []
R.init([]); //=> []
R.init('abc'); //=> 'ab'
R.init('ab'); //=> 'a'
R.init('a'); //=> ''
R.init(''); //=> '' innerJoin Added in v0.24.0
((a, b) → Boolean) → [a] → [b] → [a]
Parameters
-
pred -
xs -
ys
Returns
- Array
Принимает предикат pred, список xs, и список ys, и возвращает список xs', содержащий каждый элемент из xs, который равен одному или нескольким элементам из ys согласно pred.
pred должен быть бинарной функцией, принимающей элемент из каждого списка.
xs, ys, и xs' обрабатываются как множества, поэтому порядок не должен быть значимым, но поскольку xs' упорядочен, реализация гарантирует, что его значения находятся в том же порядке, что и в xs. Дубликаты не удаляются, поэтому xs' может содержать дубликаты, если xs содержит дубликаты.
См. также intersection.
R.innerJoin(
(record, id) => record.id === id,
[{id: 824, name: 'Richie Furay'},
{id: 956, name: 'Dewey Martin'},
{id: 313, name: 'Bruce Palmer'},
{id: 456, name: 'Stephen Stills'},
{id: 177, name: 'Neil Young'}],
[177, 456, 999]
);
//=> [{id: 456, name: 'Stephen Stills'}, {id: 177, name: 'Neil Young'}] insert Added in v0.2.2
Number → a → [a] → [a]
Parameters
-
indexПозиция вставки элемента
-
eltЭлемент для вставки в массив
-
listСписок для вставки
Returns
- Array Новый массив с `elt` вставленным по индексу `index`.
Вставляет указанный элемент в список по указанному index. Важно, что это не разрушающее действие: возвращается копия списка с изменениями. При применении этой функции списки не пострадали.
R.insert(2, 'x', [1,2,3,4]); //=> [1,2,'x',3,4]
insertAll Added in v0.9.0
Number → [a] → [a] → [a]
Parameters
-
indexПозиция вставки подсписка
-
eltsПодсписок для вставки в массив
-
listСписок, в который вставляется подсписок
Returns
- Array Новый массив с `elts` вставленными, начиная с `index`.
Вставляет подсписок в список по указанному index. Важно, что это не разрушающее действие: возвращается копия списка с изменениями. При применении этой функции списки не пострадали.
R.insertAll(2, ['x','y','z'], [1,2,3,4]); //=> [1,2,'x','y','z',3,4]
intersection Added in v0.1.0
[*] → [*] → [*]
Parameters
-
list1Первый список.
-
list2Второй список.
Returns
- Array Список элементов, присутствующих как в `list1`, так и в `list2`.
Объединяет два списка в множество (т.е. без дубликатов), состоящее из элементов, общих для обоих списков.
См. также innerJoin.
R.intersection([1,2,3,4], [7,6,5,4,3]); //=> [4, 3]
intersperse Added in v0.14.0
a → [a] → [a]
Parameters
-
separatorЭлемент для вставки в список.
-
listСписок, элементы которого необходимо разбить.
Returns
- Array Новый список.
Создает новый список с разделителем, вставленным между элементами.
Вызывает метод intersperse второго аргумента, если он присутствует.
R.intersperse('a', ['b', 'n', 'n', 's']); //=> ['b', 'a', 'n', 'a', 'n', 'a', 's'] into Added in v0.12.0
a → (b → b) → [c] → a
Parameters
-
accНачальное значение аккумулятора.
-
xfФункция-трансформер. Принимает преобразователь и возвращает преобразователь.
-
listСписок для итерации.
Returns
- * Конечное накопленное значение.
Преобразует элементы списка с помощью трансформера и добавляет преобразованные элементы к аккумулятору, используя соответствующую функцию итератора в зависимости от типа аккумулятора.
Аккумулятор может быть массивом, строкой, объектом или преобразователем. Итерируемые элементы будут добавляться к массивам и конкатенироваться со строками. Объекты будут объединяться напрямую или массивы из 2 элементов будут объединяться как пары ключ-значение.
Аккумулятор также может быть объектом преобразователя, предоставляющим функцию итератора 2-арности, step, функцию начального значения 0-арности, init, и функцию извлечения результата 1-арности, result. Функция step используется в качестве функции итератора в reduce. Функция result используется для преобразования конечного аккумулятора в тип возвращаемого значения и в большинстве случаев является R.identity. Функция init используется для предоставления начального аккумулятора.
Итерация выполняется с помощью R.reduce после инициализации трансформера.
См. также transduce.
const numbers = [1, 2, 3, 4]; const transducer = R.compose(R.map(R.add(1)), R.take(2)); R.into([], transducer, numbers); //=> [2, 3] const intoArray = R.into([]); intoArray(transducer, numbers); //=> [2, 3]
invert Added in v0.9.0
{s: x} → {x: [ s, … ]} Parameters
-
objОбъект или массив для инвертирования
Returns
- Object Новый объект с ключами в массиве.
Аналогично R.invertObj, но учитывает объекты с дублирующими значениями, помещая значения в массив.
См. также invertObj.
const raceResultsByFirstName = {
first: 'alice',
second: 'jake',
third: 'alice',
};
R.invert(raceResultsByFirstName);
//=> { 'alice': ['first', 'third'], 'jake':['second'] } invertObj Added in v0.9.0
{s: x} → {x: s} Parameters
-
objОбъект или массив для инвертирования
Returns
- Object Новый объект
Возвращает новый объект, в котором ключи исходного объекта являются значениями, а значения (преобразованные в строки) исходного объекта – ключами. Обратите внимание, что при обработке одинаковых значений используется последний найденный ключ.
См. также invert.
const raceResults = {
first: 'alice',
second: 'jake'
};
R.invertObj(raceResults);
//=> { 'alice': 'first', 'jake':'second' }
// Alternatively:
const raceResults = ['alice', 'jake'];
R.invertObj(raceResults);
//=> { 'alice': '0', 'jake':'1' } invoker Added in v0.1.0
Number → String → (a → b → … → n → Object → *)
Parameters
-
arityКоличество аргументов, которые должна принимать возвращаемая функция до объекта-цели.
-
methodИмя любого из методов объекта-цели для вызова.
Returns
- function Новая каррированная функция.
Преобразует именованный метод с указанной арностью в функцию, которую можно вызывать напрямую, передавая аргументы и объект-цель.
Возвращаемая функция каррированная и принимает arity + 1 параметра, где последний параметр – объект-цель.
См. также construct.
const sliceFrom = R.invoker(1, 'slice');
sliceFrom(6, 'abcdefghijklm'); //=> 'ghijklm'
const sliceFrom6 = R.invoker(2, 'slice')(6);
sliceFrom6(8, 'abcdefghijklm'); //=> 'gh'
const dog = {
speak: async () => 'Woof!'
};
const speak = R.invoker(0, 'speak');
speak(dog).then(console.log) //~> 'Woof!' is Added in v0.3.0
(* → {*}) → a → Boolean Parameters
-
ctorКонструктор
-
valЗначение для проверки
Возвращает
- Boolean
Проверяет, является ли объект (val) экземпляром указанного конструктора. Функция будет проверять цепочку наследования, если она есть.
R.is(Object, {}); //=> true
R.is(Number, 1); //=> true
R.is(Object, 1); //=> false
R.is(String, 's'); //=> true
R.is(String, new String('')); //=> true
R.is(Object, new String('')); //=> true
R.is(Object, 's'); //=> false
R.is(Number, {}); //=> false isEmpty Добавлен в v0.1.0
a → Boolean
Параметры
-
x
Возвращает
- Boolean
Возвращает true если заданное значение является пустым значением своего типа; false в противном случае.
См. также empty.
R.isEmpty([1, 2, 3]); //=> false
R.isEmpty([]); //=> true
R.isEmpty(''); //=> true
R.isEmpty(null); //=> false
R.isEmpty({}); //=> true
R.isEmpty({length: 0}); //=> false isNil Добавлен в v0.9.0
* → Boolean
Параметры
-
xЗначение для проверки.
Возвращает
- Boolean `true`, если `x` равно `undefined` или `null`, иначе `false`.
Проверяет, является ли входное значение null или undefined.
R.isNil(null); //=> true R.isNil(undefined); //=> true R.isNil(0); //=> false R.isNil([]); //=> false
join Добавлен в v0.1.0
String → [a] → String
Параметры
-
separatorСтрока, используемая для разделения элементов.
-
xsЭлементы для объединения в строку.
Возвращает
- String str Результирующая строка, полученная путём конкатенации `xs` с `separator`.
Возвращает строку, полученную путём вставки separator между каждым элементом и конкатенации всех элементов в одну строку.
См. также split.
const spacer = R.join(' ');
spacer(['a', 2, 3.4]); //=> 'a 2 3.4'
R.join('|', [1, 2, 3]); //=> '1|2|3' juxt Добавлен в v0.19.0
[(a, b, …, m) → n] → ((a, b, …, m) → [n])
Параметры
-
fnsМассив функций
Возвращает
- function Функция, возвращающая список значений после применения каждой из исходных `fns` к своим параметрам.
juxt применяет список функций к списку значений.
См. также applySpec.
const getRange = R.juxt([Math.min, Math.max]); getRange(3, 4, 9, -3); //=> [-3, 9]
keys Добавлен в v0.1.0
{k: v} → [k] Параметры
-
objОбъект для извлечения свойств
Возвращает
- Array Массив собственных свойств объекта.
Возвращает список, содержащий имена всех перечисляемых собственных свойств заданного объекта. Обратите внимание, что порядок выходного массива не гарантируется как постоянный на различных платформах JS.
R.keys({a: 1, b: 2, c: 3}); //=> ['a', 'b', 'c'] keysIn Добавлен в v0.2.0
{k: v} → [k] Параметры
-
objОбъект для извлечения свойств
Возвращает
- Array Массив собственных и свойств прототипа объекта.
Возвращает список, содержащий имена всех свойств заданного объекта, включая свойства прототипа. Обратите внимание, что порядок выходного массива не гарантируется как постоянный на различных платформах JS.
const F = function() { this.x = 'X'; };
F.prototype.y = 'Y';
const f = new F();
R.keysIn(f); //=> ['x', 'y'] last Добавлен в v0.1.4
[a] → a | Undefined
String → StringПараметры
-
list
Возвращает
- *
Возвращает последний элемент данного списка или строки.
R.last(['fi', 'fo', 'fum']); //=> 'fum'
R.last([]); //=> undefined
R.last('abc'); //=> 'c'
R.last(''); //=> '' lastIndexOf Добавлен в v0.1.0
a → [a] → Number
Параметры
-
targetЭлемент для поиска.
-
xsМассив для поиска.
Возвращает
- Number индекс целевого элемента, или -1, если целевой элемент не найден.
Возвращает позицию последнего вхождения элемента в массиве, или -1, если элемент не включён в массив. Для определения равенства используется R.equals.
См. также indexOf.
R.lastIndexOf(3, [-1,3,3,0,1,2,3,4]); //=> 6 R.lastIndexOf(10, [1,2,3,4]); //=> -1
length Добавлен в v0.3.0
[a] → Number
Параметры
-
listМассив для проверки.
Возвращает
- Number Длина массива.
Возвращает количество элементов в массиве, возвращая list.length.
R.length([]); //=> 0 R.length([1, 2, 3]); //=> 3
lens Добавлен в v0.8.0
(s → a) → ((a, s) → s) → Lens s a
Lens s a = Functor f => (a → f a) → s → f sПараметры
-
getter -
setter
Возвращает
- Lens
Возвращает линзу для заданных функций получения и установки. Функция получения «получает» значение фокуса; функция установки «устанавливает» значение фокуса. Функция установки не должна изменять структуру данных.
См. также view, set, over, lensIndex, lensProp.
const xLens = R.lens(R.prop('x'), R.assoc('x'));
R.view(xLens, {x: 1, y: 2}); //=> 1
R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2}
R.over(xLens, R.negate, {x: 1, y: 2}); //=> {x: -1, y: 2} lensIndex Добавлен в v0.14.0
Number → Lens s a
Lens s a = Functor f => (a → f a) → s → f sПараметры
-
n
Возвращает
- Lens
Возвращает линзу, фокус которой находится в указанном индексе.
См. также view, set, over, nth.
const headLens = R.lensIndex(0); R.view(headLens, ['a', 'b', 'c']); //=> 'a' R.set(headLens, 'x', ['a', 'b', 'c']); //=> ['x', 'b', 'c'] R.over(headLens, R.toUpper, ['a', 'b', 'c']); //=> ['A', 'b', 'c']
lensPath Добавлен в v0.19.0
[Idx] → Lens s a
Idx = String | IntLens s a = Functor f => (a → f a) → s → f sПараметры
-
pathПуть для использования.
Возвращает
- Lens
Возвращает линзу, фокус которой находится по указанному пути.
const xHeadYLens = R.lensPath(['x', 0, 'y']);
R.view(xHeadYLens, {x: [{y: 2, z: 3}, {y: 4, z: 5}]});
//=> 2
R.set(xHeadYLens, 1, {x: [{y: 2, z: 3}, {y: 4, z: 5}]});
//=> {x: [{y: 1, z: 3}, {y: 4, z: 5}]}
R.over(xHeadYLens, R.negate, {x: [{y: 2, z: 3}, {y: 4, z: 5}]});
//=> {x: [{y: -2, z: 3}, {y: 4, z: 5}]} lensProp Добавлен в v0.14.0
String → Lens s a
Lens s a = Functor f => (a → f a) → s → f sПараметры
-
k
Возвращает
- Lens
Возвращает линзу, фокус которой находится по указанному свойству.
const xLens = R.lensProp('x');
R.view(xLens, {x: 1, y: 2}); //=> 1
R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2}
R.over(xLens, R.negate, {x: 1, y: 2}); //=> {x: -1, y: 2} lift Добавлен в v0.7.0
(*… → *) → ([*]… → [*])
Параметры
-
fnФункция для подъёма в более высокий контекст
Возвращает
- function Поднятая функция.
«Поднимает» функцию с арностью > 1, чтобы она могла «отображаться» по списку, Функции или другому объекту, удовлетворяющему спецификации FantasyLand Apply.
См. также liftN.
const madd3 = R.lift((a, b, c) => a + b + c); madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7] const madd5 = R.lift((a, b, c, d, e) => a + b + c + d + e); madd5([1,2], [3], [4, 5], [6], [7, 8]); //=> [21, 22, 22, 23, 22, 23, 23, 24]
liftN Добавлен в v0.7.0
Number → (*… → *) → ([*]… → [*])
Параметры
-
fnФункция для подъёма в более высокий контекст
Возвращает
- function Поднятая функция.
«Поднимает» функцию до указанной арности, чтобы она могла «отображаться» по указанному количеству списков, Функций или других объектов, удовлетворяющих спецификации FantasyLand Apply.
const madd3 = R.liftN(3, (...args) => R.sum(args)); madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7]
lt Добавлен в v0.1.0
Ord a => a → a → Boolean
Параметры
-
a -
b
Возвращает
- Boolean
Возвращает true если первый аргумент меньше второго; false в противном случае.
См. также gt.
R.lt(2, 1); //=> false
R.lt(2, 2); //=> false
R.lt(2, 3); //=> true
R.lt('a', 'z'); //=> true
R.lt('z', 'a'); //=> false lte Добавлен в v0.1.0
Ord a => a → a → Boolean
Параметры
-
a -
b
Возвращает
- Boolean
Возвращает true если первый аргумент меньше или равен второму; false в противном случае.
См. также gte.
R.lte(2, 1); //=> false
R.lte(2, 2); //=> true
R.lte(2, 3); //=> true
R.lte('a', 'z'); //=> true
R.lte('z', 'a'); //=> false map Добавлен в v0.1.0
Functor f => (a → b) → f a → f b
Параметры
-
fnФункция, которая будет вызываться для каждого элемента входного
list. -
listСписок, по которому будет происходить итерирование.
Возвращает
- Array Новый список.
Принимает функцию и functor, применяет функцию к каждому значению functor и возвращает functor той же формы.
Ramda предоставляет подходящие map реализации для Array и Object, поэтому эту функцию можно применять к [1, 2, 3] или {x: 1, y: 2, z: 3}.
Если присутствует метод map второго аргумента, перенаправляет вызов на него.
Действует как преобразователь, если в позиции списка указан трансформатор.
Также обрабатывает функции как функторы и будет составлять их вместе.
См. также transduce, addIndex.
const double = x => x * 2;
R.map(double, [1, 2, 3]); //=> [2, 4, 6]
R.map(double, {x: 1, y: 2, z: 3}); //=> {x: 2, y: 4, z: 6} mapAccum Добавлен в v0.10.0
((acc, x) → (acc, y)) → acc → [x] → (acc, [y])
Параметры
-
fnФункция, которая будет вызываться для каждого элемента входного
list. -
accЗначение аккумулятора.
-
listСписок для итерации.
Возвращает
- * Конечное, накопленное значение.
Функция mapAccum ведет себя как комбинация map и reduce; она применяет функцию к каждому элементу списка, передавая накопительный параметр слева направо и возвращая конечное значение этого аккумулятора вместе с новым списком.
Функция-итератор получает два аргумента, acc и value, и должна возвращать кортеж [acc, value].
См. также scan, addIndex, mapAccumRight.
const digits = ['1', '2', '3', '4']; const appender = (a, b) => [a + b, a + b]; R.mapAccum(appender, 0, digits); //=> ['01234', ['01', '012', '0123', '01234']]
mapAccumRight Добавлен в v0.10.0
((acc, x) → (acc, y)) → acc → [x] → (acc, [y])
Параметры
-
fnФункция, которая будет вызываться для каждого элемента входного
list. -
accЗначение аккумулятора.
-
listСписок для итерации.
Возвращает
- * Конечное, накопленное значение.
Функция mapAccumRight ведет себя как комбинация map и reduce; она применяет функцию к каждому элементу списка, передавая накопительный параметр справа налево и возвращая конечное значение этого аккумулятора вместе с новым списком.
Аналогично mapAccum, но проходит по входному списку справа налево.
Функция-итератор получает два аргумента, acc и value, и должна возвращать кортеж [acc, value].
const digits = ['1', '2', '3', '4']; const appender = (a, b) => [b + a, b + a]; R.mapAccumRight(appender, 5, digits); //=> ['12345', ['12345', '2345', '345', '45']]
mapObjIndexed Добавлен в v0.9.0
((*, String, Object) → *) → Object → Object
Параметры
-
fn -
obj
Возвращает
- Объект
Объектно-специфическая версия map. Функция применяется к трём аргументам: (значение, ключ, объект). Если важен только сам элемент, используйте map.
См. также map.
const xyz = { x: 1, y: 2, z: 3 };
const prependKeyAndDouble = (num, key, obj) => key + (num * 2);
R.mapObjIndexed(prependKeyAndDouble, xyz); //=> { x: 'x2', y: 'y4', z: 'z6' } match Добавлен в v0.1.0
RegExp → String → [String | Undefined]
Параметры
-
rxРегулярное выражение.
-
strСтрока для проверки.
Возвращает
- Массив Список совпадений или пустой массив.
Проверяет регулярное выражение на соответствие строке. Обратите внимание, что эта функция вернёт пустой массив, если совпадений нет. Это отличается от String.prototype.match, которая возвращает null при отсутствии совпадений.
См. также test.
R.match(/([a-z]a)/g, 'bananas'); //=> ['ba', 'na', 'na'] R.match(/a/, 'b'); //=> [] R.match(/a/, null); //=> TypeError: null does not have a method named "match"
mathMod Добавлен в v0.3.0
Number → Number → Number
Параметры
-
mДелимое.
-
pМодуль.
Возвращает
- Число Результат `b mod a`.
mathMod ведет себя математически, в отличие от оператора % (и, соответственно, R.modulo). Так, в то время как -17 % 5 равно -2, mathMod(-17, 5) равно 3. mathMod требует целочисленные аргументы и возвращает NaN, когда модуль равен нулю или отрицателен.
См. также modulo.
R.mathMod(-17, 5); //=> 3 R.mathMod(17, 5); //=> 2 R.mathMod(17, -5); //=> NaN R.mathMod(17, 0); //=> NaN R.mathMod(17.2, 5); //=> NaN R.mathMod(17, 5.3); //=> NaN const clock = R.mathMod(R.__, 12); clock(15); //=> 3 clock(24); //=> 0 const seventeenMod = R.mathMod(17); seventeenMod(3); //=> 2 seventeenMod(4); //=> 1 seventeenMod(10); //=> 7
max Добавлен в v0.1.0
Ord a => a → a → a
Параметры
-
a -
b
Возвращает
- *
Возвращает большее из двух аргументов.
R.max(789, 123); //=> 789
R.max('a', 'b'); //=> 'b' maxBy Добавлен в v0.8.0
Ord b => (a → b) → a → a → a
Параметры
-
f -
a -
b
Возвращает
- *
Принимает функцию и два значения и возвращает то значение, которое даёт большее значение при передаче в предоставленную функцию.
// square :: Number -> Number const square = n => n * n; R.maxBy(square, -3, 2); //=> -3 R.reduce(R.maxBy(square), 0, [3, -5, 4, 1, -2]); //=> -5 R.reduce(R.maxBy(square), 0, []); //=> 0
mean Добавлен в v0.14.0
[Number] → Number
Параметры
-
list
Возвращает
- Число
Возвращает среднее значение данного списка чисел.
См. также median.
R.mean([2, 7, 9]); //=> 6 R.mean([]); //=> NaN
median Добавлен в v0.14.0
[Number] → Number
Параметры
-
list
Возвращает
- Число
Возвращает медиану данного списка чисел.
См. также mean.
R.median([2, 9, 7]); //=> 7 R.median([7, 2, 10, 9]); //=> 8 R.median([]); //=> NaN
memoizeWith Добавлен в v0.24.0
(*… → String) → (*… → a) → (*… → a)
Параметры
-
fnФункция для генерации ключа кэша.
-
fnФункция для кэширования.
Возвращает
- Функция Кэшированная версия `fn`.
Создаёт новую функцию, которая, при вызове, кэширует результат вызова fn для данного набора аргументов и возвращает результат. Последующие вызовы кэшированной fn с тем же набором аргументов не приведут к дополнительным вызовам fn; вместо этого будет возвращён кэшированный результат для этого набора аргументов.
let count = 0;
const factorial = R.memoizeWith(R.identity, n => {
count += 1;
return R.product(R.range(1, n + 1));
});
factorial(5); //=> 120
factorial(5); //=> 120
factorial(5); //=> 120
count; //=> 1 merge Добавлен в v0.1.0
{k: v} → {k: v} → {k: v}Параметры
-
l -
r
Возвращает
- Объект
Создаёт новый объект с собственными свойствами первого объекта, объединёнными с собственными свойствами второго объекта. Если ключ существует в обоих объектах, используется значение из второго объекта.
См. также mergeRight, mergeDeepRight, mergeWith, mergeWithKey.
R.merge({ 'name': 'fred', 'age': 10 }, { 'age': 40 });
//=> { 'name': 'fred', 'age': 40 }
const withDefaults = R.merge({x: 0, y: 0});
withDefaults({y: 2}); //=> {x: 0, y: 2} mergeAll Добавлен в v0.10.0
[{k: v}] → {k: v} Параметры
-
listМассив объектов
Возвращает
- Объект Объединённый объект.
Объединяет список объектов в один объект.
См. также reduce.
R.mergeAll([{foo:1},{bar:2},{baz:3}]); //=> {foo:1,bar:2,baz:3}
R.mergeAll([{foo:1},{foo:2},{bar:2}]); //=> {foo:2,bar:2} mergeDeepLeft Добавлен в v0.24.0
{a} → {a} → {a} Параметры
-
lObj -
rObj
Возвращает
- Объект
Создаёт новый объект с собственными свойствами первого объекта, объединёнными с собственными свойствами второго объекта. Если ключ существует в обоих объектах:
- и оба значения являются объектами, два значения будут рекурсивно объединены
- в противном случае используется значение из первого объекта.
См. также merge, mergeDeepRight, mergeDeepWith, mergeDeepWithKey.
R.mergeDeepLeft({ name: 'fred', age: 10, contact: { email: 'moo@example.com' }},
{ age: 40, contact: { email: 'baa@example.com' }});
//=> { name: 'fred', age: 10, contact: { email: 'moo@example.com' }} mergeDeepRight Добавлен в v0.24.0
{a} → {a} → {a} Параметры
-
lObj -
rObj
Возвращает
- Объект
Создаёт новый объект с собственными свойствами первого объекта, объединёнными с собственными свойствами второго объекта. Если ключ существует в обоих объектах:
- и оба значения являются объектами, два значения будут рекурсивно объединены
- в противном случае используется значение из второго объекта.
См. также merge, mergeDeepLeft, mergeDeepWith, mergeDeepWithKey.
R.mergeDeepRight({ name: 'fred', age: 10, contact: { email: 'moo@example.com' }},
{ age: 40, contact: { email: 'baa@example.com' }});
//=> { name: 'fred', age: 40, contact: { email: 'baa@example.com' }} mergeDeepWith Добавлен в v0.24.0
((a, a) → a) → {a} → {a} → {a} Параметры
-
fn -
lObj -
rObj
Возвращает
- Объект
Создаёт новый объект с собственными свойствами двух предоставленных объектов. Если ключ существует в обоих объектах:
- и оба ассоциированные значения также являются объектами, значения будут рекурсивно объединены.
- в противном случае, предоставленная функция применяется к ассоциированным значениям, используя полученное значение в качестве нового значения, связанного с ключом. Если ключ существует только в одном объекте, значение будет связано с ключом результирующего объекта.
См. также mergeWith, mergeDeepWithKey.
R.mergeDeepWith(R.concat,
{ a: true, c: { values: [10, 20] }},
{ b: true, c: { values: [15, 35] }});
//=> { a: true, b: true, c: { values: [10, 20, 15, 35] }} mergeDeepWithKey Добавлен в v0.24.0
((String, a, a) → a) → {a} → {a} → {a} Параметры
-
fn -
lObj -
rObj
Возвращает
- Объект
Создаёт новый объект со свойствами двух переданных объектов. Если ключ существует в обоих объектах:
- и оба сопутствующих значения также являются объектами, то значения будут рекурсивно объединены.
- в противном случае, переданная функция применяется к ключу и сопутствующим значениям, используя полученное значение в качестве нового значения, связанного с ключом. Если ключ существует только в одном объекте, значение будет связано с ключом результирующего объекта.
См. также mergeWithKey, mergeDeepWith.
let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r
R.mergeDeepWithKey(concatValues,
{ a: true, c: { thing: 'foo', values: [10, 20] }},
{ b: true, c: { thing: 'bar', values: [15, 35] }});
//=> { a: true, b: true, c: { thing: 'bar', values: [10, 20, 15, 35] }} mergeLeft Добавлен в v0.26.0
{k: v} → {k: v} → {k: v} Параметры
-
l -
r
Возвращает
- Объект
Создаёт новый объект со свойствами первого объекта, объединёнными со свойствами второго объекта. Если ключ существует в обоих объектах, будет использовано значение из первого объекта.
См. также mergeRight, mergeDeepLeft, mergeWith, mergeWithKey.
R.mergeLeft({ 'age': 40 }, { 'name': 'fred', 'age': 10 });
//=> { 'name': 'fred', 'age': 40 }
const resetToDefault = R.mergeLeft({x: 0});
resetToDefault({x: 5, y: 2}); //=> {x: 0, y: 2} mergeRight Добавлен в v0.26.0
{k: v} → {k: v} → {k: v} Параметры
-
l -
r
Возвращает
- Объект
Создаёт новый объект со свойствами первого объекта, объединёнными со свойствами второго объекта. Если ключ существует в обоих объектах, будет использовано значение из второго объекта.
См. также mergeLeft, mergeDeepRight, mergeWith, mergeWithKey.
R.mergeRight({ 'name': 'fred', 'age': 10 }, { 'age': 40 });
//=> { 'name': 'fred', 'age': 40 }
const withDefaults = R.mergeRight({x: 0, y: 0});
withDefaults({y: 2}); //=> {x: 0, y: 2} mergeWith Добавлен в v0.19.0
((a, a) → a) → {a} → {a} → {a} Параметры
-
fn -
l -
r
Возвращает
- Объект
Создаёт новый объект со свойствами двух переданных объектов. Если ключ существует в обоих объектах, переданная функция применяется к значениям, связанным с ключом в каждом объекте, результат используется в качестве значения, связанного с ключом в возвращаемом объекте.
См. также mergeDeepWith, merge, mergeWithKey.
R.mergeWith(R.concat,
{ a: true, values: [10, 20] },
{ b: true, values: [15, 35] });
//=> { a: true, b: true, values: [10, 20, 15, 35] } mergeWithKey Добавлен в v0.19.0
((String, a, a) → a) → {a} → {a} → {a} Параметры
-
fn -
l -
r
Возвращает
- Объект
Создаёт новый объект со свойствами двух переданных объектов. Если ключ существует в обоих объектах, переданная функция применяется к ключу и значениям, связанным с ключом в каждом объекте, результат используется в качестве значения, связанного с ключом в возвращаемом объекте.
См. также mergeDeepWithKey, merge, mergeWith.
let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r
R.mergeWithKey(concatValues,
{ a: true, thing: 'foo', values: [10, 20] },
{ b: true, thing: 'bar', values: [15, 35] });
//=> { a: true, b: true, thing: 'bar', values: [10, 20, 15, 35] } min Добавлен в v0.1.0
Ord a => a → a → a
Параметры
-
a -
b
Возвращает
- *
Возвращает меньшее из двух аргументов.
R.min(789, 123); //=> 123
R.min('a', 'b'); //=> 'a' minBy Добавлен в v0.8.0
Ord b => (a → b) → a → a → a
Параметры
-
f -
a -
b
Возвращает
- *
Принимает функцию и два значения, и возвращает то значение, которое даёт меньший результат при передаче в предоставленную функцию.
// square :: Number -> Number const square = n => n * n; R.minBy(square, -3, 2); //=> 2 R.reduce(R.minBy(square), Infinity, [3, -5, 4, 1, -2]); //=> 1 R.reduce(R.minBy(square), Infinity, []); //=> Infinity
modulo Добавлен в v0.1.1
Number → Number → Number
Параметры
-
aЗначение для деления.
-
bПсевдо-модуль
Возвращает
- Число Результат `b % a`.
Делит первый параметр на второй и возвращает остаток. Обратите внимание, что эта функция сохраняет поведение modulo в стиле JavaScript. Для математического modulo см. mathMod.
См. также mathMod.
R.modulo(17, 3); //=> 2 // JS behavior: R.modulo(-17, 3); //=> -2 R.modulo(17, -3); //=> 2 const isOdd = R.modulo(R.__, 2); isOdd(42); //=> 0 isOdd(21); //=> 1
move Добавлен в v0.27.0
Number → Number → [a] → [a]
Параметры
-
fromИндекс источника
-
toИндекс назначения
-
listСписок, который будет использоваться для перемещения
Возвращает
- Массив Новый список, отсортированный по-новому
Перемещает элемент с индексом from на индекс to в списке элементов. Будет создан новый список с новыми элементами в новом порядке.
R.move(0, 2, ['a', 'b', 'c', 'd', 'e', 'f']); //=> ['b', 'c', 'a', 'd', 'e', 'f'] R.move(-1, 0, ['a', 'b', 'c', 'd', 'e', 'f']); //=> ['f', 'a', 'b', 'c', 'd', 'e'] list rotation
multiply Добавлен в v0.1.0
Number → Number → Number
Параметры
-
aПервое значение.
-
bВторое значение.
Возвращает
- Число Результат `a * b`.
Умножает два числа. Эквивалентно a * b но с применением каррирования.
См. также divide.
const double = R.multiply(2); const triple = R.multiply(3); double(3); //=> 6 triple(4); //=> 12 R.multiply(2, 5); //=> 10
nAry Добавлен в v0.1.0
Number → (* → a) → (* → a)
Параметры
-
nНеобходимая арность новой функции.
-
fnФункция, которую нужно обернуть.
Возвращает
- функция Новая функция, которая обертывает `fn`. Новая функция гарантированно имеет арность `n`.
Оборачивает функцию любой арности (включая нульарную) в функцию, которая принимает ровно n параметров. Любые дополнительные параметры не будут переданы в предоставленную функцию.
const takesTwoArgs = (a, b) => [a, b]; takesTwoArgs.length; //=> 2 takesTwoArgs(1, 2); //=> [1, 2] const takesOneArg = R.nAry(1, takesTwoArgs); takesOneArg.length; //=> 1 // Only `n` arguments are passed to the wrapped function takesOneArg(1, 2); //=> [1, undefined]
negate Добавлен в v0.9.0
Number → Number
Параметры
-
n
Возвращает
- Число
Изменяет знак своего аргумента.
R.negate(42); //=> -42
none Добавлен в v0.12.0
(a → Boolean) → [a] → Boolean
Параметры
-
fnФункция-предикат.
-
listМассив для рассмотрения.
Возвращает
- Булево `true`, если предикат не выполняется для каждого элемента, `false` в противном случае.
Возвращает true, если ни один элемент списка не соответствует предикату, false в противном случае.
Вызывает метод all второго аргумента, если он присутствует.
Действует как трансформер, если трансформер задан в позиции списка.
const isEven = n => n % 2 === 0; const isOdd = n => n % 2 === 1; R.none(isEven, [1, 3, 5, 7, 9, 11]); //=> true R.none(isOdd, [1, 3, 5, 7, 8, 11]); //=> false
not Добавлен в v0.1.0
* → Boolean
Параметры
-
aлюбое значение
Возвращает
- Булево логическое отрицание переданного аргумента.
Функция, возвращающая ! своего аргумента. Возвращает true при передаче ложного значения и false при передаче истинного значения.
См. также complement.
R.not(true); //=> false R.not(false); //=> true R.not(0); //=> true R.not(1); //=> false
nth Добавлен в v0.1.0
Number → [a] → a | Undefined
Number → String → StringПараметры
-
offset -
list
Возвращает
- *
Возвращает n-й элемент данного списка или строки. Если n отрицательно, возвращается элемент с индексом длина + n.
const list = ['foo', 'bar', 'baz', 'quux']; R.nth(1, list); //=> 'bar' R.nth(-1, list); //=> 'quux' R.nth(-99, list); //=> undefined R.nth(2, 'abc'); //=> 'c' R.nth(3, 'abc'); //=> ''
nthArg Добавлен в v0.9.0
Number → *… → *
Параметры
-
n
Возвращает
- функция
Возвращает функцию, которая возвращает свой n-й аргумент.
R.nthArg(1)('a', 'b', 'c'); //=> 'b'
R.nthArg(-1)('a', 'b', 'c'); //=> 'c' o Добавлен в v0.24.0
(b → c) → (a → b) → a → c
Параметры
-
f -
g
Возвращает
- функция
o — это функция композиции с каррированием, которая возвращает унарную функцию. Как и compose, o выполняет композицию функций справа налево. В отличие от compose, правая функция, переданная o, будет вызвана только с одним аргументом. Также, в отличие от compose, o ограничена приёмом только 2 унарных функций. Имя o выбрано из-за сходства с математическим оператором композиции ∘.
const classyGreeting = name => "The name's " + name.last + ", " + name.first + " " + name.last
const yellGreeting = R.o(R.toUpper, classyGreeting);
yellGreeting({first: 'James', last: 'Bond'}); //=> "THE NAME'S BOND, JAMES BOND"
R.o(R.multiply(10), R.add(10))(-4) //=> 60 objOf Добавлен в v0.18.0
String → a → {String:a} Параметры
-
key -
val
Возвращает
- Объект
Создаёт объект, содержащий одну пару ключ-значение.
См. также pair.
const matchPhrases = R.compose(
R.objOf('must'),
R.map(R.objOf('match_phrase'))
);
matchPhrases(['foo', 'bar', 'baz']); //=> {must: [{match_phrase: 'foo'}, {match_phrase: 'bar'}, {match_phrase: 'baz'}]} of Добавлен в v0.3.0
a → [a]
Параметры
-
xлюбое значение
Возвращает
- Массив Массив, оборачивающий `x`.
Возвращает массив с единственным элементом, содержащим предоставленное значение.
Обратите внимание, что этот метод of отличается от ES6 of; см. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of
R.of(null); //=> [null] R.of([42]); //=> [[42]]
omit Добавлен в v0.1.0
[String] → {String: *} → {String: *} Параметры
-
namesмассив имён свойств типа String, которые необходимо исключить из нового объекта
-
objобъект, из которого нужно скопировать свойства
Возвращает
- Объект Новый объект, из которого удалены свойства из `names`.
Возвращает частичную копию объекта, исключая указанные ключи.
См. также pick.
R.omit(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, c: 3} once Добавлен в v0.1.0
(a… → b) → (a… → b)
Параметры
-
fnФункция, которую нужно обернуть в обёртку, вызывающую её только один раз.
Возвращает
- функция Обёрнутая функция.
Принимает функцию fn и возвращает функцию, которая контролирует вызов fn, так что fn может быть вызвана только один раз, независимо от того, сколько раз вызывается возвращённая функция. Первое вычисленное значение возвращается в последующих вызовах.
const addOneOnce = R.once(x => x + 1); addOneOnce(10); //=> 11 addOneOnce(addOneOnce(50)); //=> 11
or Добавлен в v0.1.0
a → b → a | b
Параметры
-
a -
b
Возвращает
- Любое Первый аргумент, если он истинно, иначе второй аргумент.
Возвращает true, если один или оба аргумента являются true. Возвращает false, если оба аргумента false.
R.or(true, true); //=> true R.or(true, false); //=> true R.or(false, true); //=> true R.or(false, false); //=> false
otherwise Добавлен в v0.26.0
(e → b) → (Promise e a) → (Promise e b)
(e → (Promise f b)) → (Promise e a) → (Promise f b)Параметры
-
onFailureФункция для применения. Может возвращать значение или промис значения.
-
p
Возвращает
- Промис Результат вызова `p.then(null, onFailure)`
Возвращает результат применения функции onFailure к значению внутри отклонившегося промиса. Это полезно для обработки отклоненных промисов внутри композиций функций.
См. также andThen.
var failedFetch = (id) => Promise.reject('bad ID');
var useDefault = () => ({ firstName: 'Bob', lastName: 'Loblaw' })
//recoverFromFailure :: String -> Promise ({firstName, lastName})
var recoverFromFailure = R.pipe(
failedFetch,
R.otherwise(useDefault),
R.andThen(R.pick(['firstName', 'lastName'])),
);
recoverFromFailure(12345).then(console.log) over Добавлен в v0.16.0
Lens s a → (a → a) → s → s
Lens s a = Functor f => (a → f a) → s → f sПараметры
-
lens -
v -
x
Возвращает
- *
Возвращает результат «установки» части заданной структуры данных, сосредоточенной заданным объективом, на результат применения заданной функции к сфокусированному значению.
См. также prop, lensIndex, lensProp.
const headLens = R.lensIndex(0); R.over(headLens, R.toUpper, ['foo', 'bar', 'baz']); //=> ['FOO', 'bar', 'baz']
pair Добавлен в v0.18.0
a → b → (a,b)
Параметры
-
fst -
snd
Возвращает
- Массив
Принимает два аргумента, fst и snd, и возвращает [fst, snd].
R.pair('foo', 'bar'); //=> ['foo', 'bar'] partial Добавлен в v0.10.0
((a, b, c, …, n) → x) → [a, b, c, …] → ((d, e, f, …, n) → x)
Параметры
-
f -
args
Возвращает
- функция
Принимает функцию f и список аргументов, и возвращает функцию g. При применении g возвращает результат применения f к предоставленным изначально аргументам, за которыми следуют аргументы, предоставленные для g.
См. также partialRight, curry.
const multiply2 = (a, b) => a * b;
const double = R.partial(multiply2, [2]);
double(2); //=> 4
const greet = (salutation, title, firstName, lastName) =>
salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!';
const sayHello = R.partial(greet, ['Hello']);
const sayHelloToMs = R.partial(sayHello, ['Ms.']);
sayHelloToMs('Jane', 'Jones'); //=> 'Hello, Ms. Jane Jones!' partialRight Добавлен в v0.10.0
((a, b, c, …, n) → x) → [d, e, f, …, n] → ((a, b, c, …) → x)
Параметры
-
f -
args
Возвращает
- функция
Принимает функцию f и список аргументов, и возвращает функцию g. При применении g возвращает результат применения f к аргументам, предоставленным для g за которыми следуют предоставленные изначально аргументы.
См. также partial.
const greet = (salutation, title, firstName, lastName) =>
salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!';
const greetMsJaneJones = R.partialRight(greet, ['Ms.', 'Jane', 'Jones']);
greetMsJaneJones('Hello'); //=> 'Hello, Ms. Jane Jones!' partition Добавлен в v0.1.4
Filterable f => (a → Boolean) → f a → [f a, f a]
Параметры
-
predПредикат для определения стороны, к которой относится элемент.
-
filterableСписок (или другой фильтруемый) объект для разбиения.
Возвращает
- Массив Массив, содержащий вначале подмножество элементов, удовлетворяющих предикату, и во-вторых, подмножество элементов, которые не удовлетворяют предикату.
Принимает предикат и список или другой Filterable объект и возвращает пару фильтруемых объектов того же типа элементов, которые удовлетворяют и не удовлетворяют предикату соответственно. Фильтруемые объекты включают обычные объекты или любые объекты, имеющие метод фильтра, такой как Array.
R.partition(R.includes('s'), ['sss', 'ttt', 'foo', 'bars']);
// => [ [ 'sss', 'bars' ], [ 'ttt', 'foo' ] ]
R.partition(R.includes('s'), { a: 'sss', b: 'ttt', foo: 'bars' });
// => [ { a: 'sss', foo: 'bars' }, { b: 'ttt' } ] path Добавлен в v0.2.0
[Idx] → {a} → a | Undefined Idx = String | IntПараметры
-
pathПуть для использования.
-
objОбъект для извлечения вложенного свойства.
Возвращает
- * Данные по пути `path`.
Извлечение значения по заданному пути.
R.path(['a', 'b'], {a: {b: 2}}); //=> 2
R.path(['a', 'b'], {c: {b: 2}}); //=> undefined
R.path(['a', 'b', 0], {a: {b: [1, 2, 3]}}); //=> 1
R.path(['a', 'b', -2], {a: {b: [1, 2, 3]}}); //=> 2 pathEq Добавлен в v0.7.0
[Idx] → a → {a} → Boolean Idx = String | IntПараметры
-
pathПуть вложенного свойства для использования
-
valЗначение для сравнения вложенного свойства
-
objОбъект для проверки вложенного свойства
Возвращает
- Булево `true`, если значение равно вложенному свойству объекта, `false` в противном случае.
Определяет, содержит ли вложенный путь объекта определённое значение, в терминах R.equals. Вероятнее всего используется для фильтрации списка.
const user1 = { address: { zipCode: 90210 } };
const user2 = { address: { zipCode: 55555 } };
const user3 = { name: 'Bob' };
const users = [ user1, user2, user3 ];
const isFamous = R.pathEq(['address', 'zipCode'], 90210);
R.filter(isFamous, users); //=> [ user1 ] pathOr Добавлен в v0.18.0
a → [Idx] → {a} → a Idx = String | IntПараметры
-
dЗначение по умолчанию.
-
pПуть для использования.
-
objОбъект для извлечения вложенного свойства.
Возвращает
- * Данные по пути `path` предоставленного объекта или значение по умолчанию.
Если заданный, не-null объект содержит значение по заданному пути, возвращает значение по этому пути. Иначе возвращает предоставленное значение по умолчанию.
R.pathOr('N/A', ['a', 'b'], {a: {b: 2}}); //=> 2
R.pathOr('N/A', ['a', 'b'], {c: {b: 2}}); //=> "N/A" paths Добавлен в v0.27.0
[Idx] → {a} → [a | Undefined] Idx = [String | Int]Параметры
-
pathsArrayМассив путей для получения.
-
objОбъект для извлечения вложенных свойств.
Возвращает
- Массив Список значений по путям, указанным в "pathsArray".
Извлекает значения по заданным путям объекта.
См. также path.
R.paths([['a', 'b'], ['p', 0, 'q']], {a: {b: 2}, p: [{q: 3}]}); //=> [2, 3]
R.paths([['a', 'b'], ['p', 'r']], {a: {b: 2}, p: [{q: 3}]}); //=> [2, undefined] pathSatisfies Добавлен в v0.19.0
(a → Boolean) → [Idx] → {a} → Boolean Idx = String | IntПараметры
-
pred -
propPath -
obj
Возвращает
- Булево
Возвращает true, если указанное свойство объекта по заданному пути удовлетворяет заданному предикату; false в противном случае.
См. также propSatisfies, path.
R.pathSatisfies(y => y > 0, ['x', 'y'], {x: {y: 2}}); //=> true
R.pathSatisfies(R.is(Object), [], {x: {y: 2}}); //=> true pick Добавлен в v0.1.0
[k] → {k: v} → {k: v} Параметры
-
namesмассив имён свойств типа String для копирования на новый объект
-
objобъект для копирования
Возвращает
- Объект Новый объект, содержащий только свойства из `names`.
Возвращает частичную копию объекта, содержащую только указанные ключи. Если ключ не существует, свойство игнорируется.
R.pick(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4}
R.pick(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1} pickAll Добавлен в v0.1.0
[k] → {k: v} → {k: v} Параметры
-
namesмассив имён свойств типа String для копирования на новый объект
-
objобъект для копирования
Возвращает
- Объект Новый объект, содержащий только свойства из `names`.
Аналогично pick за исключением того, что данный метод включает в себя key: undefined пару для свойств, которых нет.
См. также pick.
R.pickAll(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4}
R.pickAll(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, e: undefined, f: undefined} pickBy Добавлен в v0.8.0
((v, k) → Boolean) → {k: v} → {k: v} Параметры
-
predПредикат для определения включения или исключения ключа в выходной объект.
-
objОбъект для копирования
Возвращает
- Объект Новый объект, содержащий только свойства, удовлетворяющие `pred`.
Возвращает частичную копию объекта, содержащую только ключи, удовлетворяющие предоставленному предикату.
const isUpperCase = (val, key) => key.toUpperCase() === key;
R.pickBy(isUpperCase, {a: 1, b: 2, A: 3, B: 4}); //=> {A: 3, B: 4} pipe Добавлен в v0.1.0
(((a, b, …, n) → o), (o → p), …, (x → y), (y → z)) → ((a, b, …, n) → z)
Параметры
-
functions
Возвращает
- функция
Выполняет композицию функций слева направо. Первый аргумент может иметь любую арность; остальные аргументы должны быть унарными.
В некоторых библиотеках эта функция называется sequence.
Примечание: Результат pipe не автоматически керрируется.
См. также compose.
const f = R.pipe(Math.pow, R.negate, R.inc); f(3, 4); // -(3^4) + 1
pipeK Добавлен в v0.16.0
Chain m => ((a → m b), (b → m c), …, (y → m z)) → (a → m z)Параметры
Возвращает
- функция
Возвращает лево-правое композицию Kleisli предоставленных функций, каждая из которых должна возвращать значение типа, поддерживаемого chain.
R.pipeK(f, g, h) эквивалентно R.pipe(f, R.chain(g), R.chain(h)).
См. также composeK.
// parseJson :: String -> Maybe *
// get :: String -> Object -> Maybe *
// getStateCode :: Maybe String -> Maybe String
const getStateCode = R.pipeK(
parseJson,
get('user'),
get('address'),
get('state'),
R.compose(Maybe.of, R.toUpper)
);
getStateCode('{"user":{"address":{"state":"ny"}}}');
//=> Just('NY')
getStateCode('[Invalid JSON]');
//=> Nothing() pipeP Добавлен в v0.10.0
((a → Promise b), (b → Promise c), …, (y → Promise z)) → (a → Promise z)Параметры
-
functions
Возвращает
- функция
Выполняет композицию слева направо одной или нескольких функций, возвращающих Promise. Первый аргумент может иметь любую арность; остальные аргументы должны быть унарными.
См. также composeP.
// followersForUser :: String -> Promise [User] const followersForUser = R.pipeP(db.getUserById, db.getFollowers);
pipeWith Добавлен в v0.26.0
((* → *), [((a, b, …, n) → o), (o → p), …, (x → y), (y → z)]) → ((a, b, …, n) → z)
Параметры
-
functions
Возвращает
- функция
Выполняет композицию функций слева направо с использованием трансформирующей функции. Первый аргумент может иметь любую арность; остальные аргументы должны быть унарными.
Примечание: Результат pipeWith не автоматически керрируется. Трансформирующая функция не используется для первого аргумента.
См. также composeWith, pipe.
const pipeWhileNotNil = R.pipeWith((f, res) => R.isNil(res) ? res : f(res)); const f = pipeWhileNotNil([Math.pow, R.negate, R.inc]) f(3, 4); // -(3^4) + 1
pluck Добавлен в v0.1.0
Functor f => k → f {k: v} → f v Параметры
-
keyИмя ключа для извлечения из каждого объекта.
-
fМассив или функтор для рассмотрения.
Возвращает
- Массив Список значений для данного ключа.
Возвращает новый список, извлекая одноимённое свойство из всех объектов в предоставленном списке.
pluck будет работать с любым функтором, помимо массивов, поскольку это эквивалентно R.map(R.prop(k), f).
См. также props.
var getAges = R.pluck('age');
getAges([{name: 'fred', age: 29}, {name: 'wilma', age: 27}]); //=> [29, 27]
R.pluck(0, [[1, 2], [3, 4]]); //=> [1, 3]
R.pluck('val', {a: {val: 3}, b: {val: 5}}); //=> {a: 3, b: 5} prepend Добавлен в v0.1.0
a → [a] → [a]
Параметры
-
elЭлемент для добавления в начало выходного списка.
-
listМассив для добавления в хвост выходного списка.
Возвращает
- Массив Новый массив.
Возвращает новый список с заданным элементом в начале, за которым следуют содержимое списка.
См. также append.
R.prepend('fee', ['fi', 'fo', 'fum']); //=> ['fee', 'fi', 'fo', 'fum'] product Добавлен в v0.1.0
[Number] → Number
Параметры
-
listМассив чисел
Возвращает
- Число Произведение всех чисел в списке.
Перемножает все элементы списка.
См. также reduce.
R.product([2,4,6,8,100,1]); //=> 38400
project Добавлен в v0.1.0
[k] → [{k: v}] → [{k: v}] Параметры
-
propsИмена свойств для проектирования
-
objsОбъекты для запроса
Возвращает
- Массив Массив объектов, содержащих только свойства `props`.
Разумный аналог SQL select оператора.
const abby = {name: 'Abby', age: 7, hair: 'blond', grade: 2};
const fred = {name: 'Fred', age: 12, hair: 'brown', grade: 7};
const kids = [abby, fred];
R.project(['name', 'grade'], kids); //=> [{name: 'Abby', grade: 2}, {name: 'Fred', grade: 7}] prop Добавлен в v0.1.0
Idx → {s: a} → a | Undefined Idx = String | IntПараметры
-
pИмя свойства или индекс массива
-
objОбъект для запроса
Возвращает
- * Значение в `obj.p`.
Возвращает функцию, которая, когда получает объект, возвращает указанное свойство этого объекта, если оно существует.
R.prop('x', {x: 100}); //=> 100
R.prop('x', {}); //=> undefined
R.prop(0, [100]); //=> 100
R.compose(R.inc, R.prop('x'))({ x: 3 }) //=> 4 propEq Добавлен в v0.1.0
String → a → Object → Boolean
Параметры
-
name -
val -
obj
Возвращает
- Булево
Возвращает true если указанное свойство объекта равно, в терминах R.equals, заданному значению; false в противном случае. Вы можете проверить несколько свойств с помощью R.whereEq.
См. также whereEq, propSatisfies, equals.
const abby = {name: 'Abby', age: 7, hair: 'blond'};
const fred = {name: 'Fred', age: 12, hair: 'brown'};
const rusty = {name: 'Rusty', age: 10, hair: 'brown'};
const alois = {name: 'Alois', age: 15, disposition: 'surly'};
const kids = [abby, fred, rusty, alois];
const hasBrownHair = R.propEq('hair', 'brown');
R.filter(hasBrownHair, kids); //=> [fred, rusty] propIs Добавлен в v0.16.0
Type → String → Object → Boolean
Параметры
-
type -
name -
obj
Возвращает
- Булево
Возвращает true если указанное свойство объекта является заданного типа; false в противном случае.
См. также is, propSatisfies.
R.propIs(Number, 'x', {x: 1, y: 2}); //=> true
R.propIs(Number, 'x', {x: 'foo'}); //=> false
R.propIs(Number, 'x', {}); //=> false propOr Добавлен в v0.6.0
a → String → Object → a
Параметры
-
valЗначение по умолчанию.
-
pИмя свойства, которое нужно вернуть.
-
objОбъект для запроса.
Возвращает
- * Значение заданного свойства предоставленного объекта или значение по умолчанию.
Если у данного объекта есть собственное свойство с указанным именем, возвращает значение этого свойства. В противном случае возвращает предоставленное значение по умолчанию.
const alice = {
name: 'ALICE',
age: 101
};
const favorite = R.prop('favoriteLibrary');
const favoriteWithDefault = R.propOr('Ramda', 'favoriteLibrary');
favorite(alice); //=> undefined
favoriteWithDefault(alice); //=> 'Ramda' props Добавлен в v0.1.0
[k] → {k: v} → [v] Параметры
-
psИмена свойств для извлечения
-
objОбъект для запроса
Возвращает
- Массив Соответствующие значения или частично применённая функция.
Выступает как несколько prop: массив ключей на вход, массив значений на выходе. Сохраняет порядок.
R.props(['x', 'y'], {x: 1, y: 2}); //=> [1, 2]
R.props(['c', 'a', 'b'], {b: 2, a: 1}); //=> [undefined, 1, 2]
const fullName = R.compose(R.join(' '), R.props(['first', 'last']));
fullName({last: 'Bullet-Tooth', age: 33, first: 'Tony'}); //=> 'Tony Bullet-Tooth' propSatisfies Добавлен в v0.16.0
(a → Boolean) → String → {String: a} → Boolean Параметры
-
pred -
name -
obj
Возвращает
- Булево
Возвращает true если указанное свойство объекта удовлетворяет заданному предикату; false в противном случае. Вы можете проверить несколько свойств с помощью R.where.
См. также where, propEq, propIs.
R.propSatisfies(x => x > 0, 'x', {x: 1, y: 2}); //=> true range Добавлена в v0.1.0
Number → Number → [Number]
Параметры
-
fromПервое число в списке.
-
toЧисло, на единицу больше последнего числа в списке.
Возвращает
- Массив Список чисел в наборе `[a, b)`.
Возвращает список чисел от from (включительно) до to (исключительно).
R.range(1, 5); //=> [1, 2, 3, 4] R.range(50, 53); //=> [50, 51, 52]
reduce Добавлена в v0.1.0
((a, b) → a) → a → [b] → a
Параметры
-
fnФункция-итератор. Принимает два значения: накопитель и текущий элемент из массива.
-
accЗначение накопителя.
-
listСписок для итерации.
Возвращает
- * Конечное, накопленное значение.
Возвращает единственный элемент, итерируя по списку, последовательно вызывая функцию-итератор и передавая ей значение накопителя и текущее значение из массива, а затем передавая результат следующему вызову.
Функция-итератор получает два значения: (acc, value). Она может использовать R.reduced для прерывания итерации.
Порядок аргументов функции-итератора reduceRight — (value, acc).
Примечание: R.reduce не пропускает удалённые или неназначенные индексы (разреженные массивы), в отличие от стандартного метода Array.prototype.reduce. Более подробную информацию об этом поведении можно найти по адресу: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce#Description
Выполняет вызов метода reduce третьего аргумента, если он присутствует. При этом пользователю необходимо самостоятельно обрабатывать прерывание R.reduced, так как это не реализовано в reduce.
См. также reduced, addIndex, reduceRight.
R.reduce(R.subtract, 0, [1, 2, 3, 4]) // => ((((0 - 1) - 2) - 3) - 4) = -10 // - -10 // / \ / \ // - 4 -6 4 // / \ / \ // - 3 ==> -3 3 // / \ / \ // - 2 -1 2 // / \ / \ // 0 1 0 1
reduceBy Добавлена в v0.20.0
((a, b) → a) → a → (b → String) → [b] → {String: a} Параметры
-
valueFnФункция, которая сводит элементы каждой группы к одному значению. Принимает два значения: накопитель для конкретной группы и текущий элемент.
-
acc(Начальное) значение накопителя для каждой группы.
-
keyFnФункция, которая отображает элемент списка в ключ.
-
listМассив для группировки.
Возвращает
- Объект Объект с результатом `keyFn` для ключей, сопоставленных с результатом `valueFn` для элементов, которые произвели этот ключ при передаче в `keyFn`.
Группирует элементы списка в соответствии с результатом вызова функции, возвращающей строку keyFn, для каждого элемента и сводит элементы каждой группы к одному значению с помощью функции-редуктора valueFn.
Эта функция в основном является более общей функцией groupBy.
Действует как преобразователь, если преобразователь задан в позиции списка.
const groupNames = (acc, {name}) => acc.concat(name)
const toGrade = ({score}) =>
score < 65 ? 'F' :
score < 70 ? 'D' :
score < 80 ? 'C' :
score < 90 ? 'B' : 'A'
var students = [
{name: 'Abby', score: 83},
{name: 'Bart', score: 62},
{name: 'Curt', score: 88},
{name: 'Dora', score: 92},
]
reduceBy(groupNames, [], toGrade, students)
//=> {"A": ["Dora"], "B": ["Abby", "Curt"], "F": ["Bart"]} reduced Добавлена в v0.15.0
a → *
Параметры
-
xКонечное значение reduce.
Возвращает
- * Обёрнутое значение.
Возвращает значение, обернутое для указания того, что это конечное значение функций reduce и transduce. Возвращаемое значение должно рассматриваться как "чёрный ящик": внутренняя структура не гарантируется стабильной.
Примечание: эта оптимизация доступна только для следующих функций:
См. также reduce, reduceWhile, transduce.
R.reduce( (acc, item) => item > 3 ? R.reduced(acc) : acc.concat(item), [], [1, 2, 3, 4, 5]) // [1, 2, 3]
reduceRight Добавлена в v0.1.0
((a, b) → b) → b → [a] → b
Параметры
-
fnФункция-итератор. Принимает два значения: текущий элемент из массива и накопитель.
-
accЗначение накопителя.
-
listСписок для итерации.
Возвращает
- * Конечное, накопленное значение.
Возвращает единственный элемент, итерируя по списку, последовательно вызывая функцию-итератор и передавая ей значение накопителя и текущее значение из массива, а затем передавая результат следующему вызову.
Аналогично reduce, за исключением того, что проходит по входному списку справа налево.
Функция-итератор получает два значения: (value, acc), в то время как порядок аргументов функции-итератора reduce — (acc, value).
Примечание: R.reduceRight не пропускает удалённые или неназначенные индексы (разреженные массивы), в отличие от стандартного метода Array.prototype.reduceRight. Подробнее об этом поведении см.: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduceRight#Description
R.reduceRight(R.subtract, 0, [1, 2, 3, 4]) // => (1 - (2 - (3 - (4 - 0)))) = -2 // - -2 // / \ / \ // 1 - 1 3 // / \ / \ // 2 - ==> 2 -1 // / \ / \ // 3 - 3 4 // / \ / \ // 4 0 4 0
reduceWhile Добавлена в v0.22.0
((a, b) → Boolean) → ((a, b) → a) → a → [b] → a
Параметры
-
predПредикат. Передаёт накопитель и текущий элемент.
-
fnФункция-итератор. Принимает два значения: накопитель и текущий элемент.
-
aЗначение накопителя.
-
listСписок для итерации.
Возвращает
- * Конечное, накопленное значение.
Как и reduce, reduceWhile возвращает единственный элемент, итерируя по списку, последовательно вызывая функцию-итератор. reduceWhile также принимает предикат, который оценивается перед каждым шагом. Если предикат возвращает false, он "прерывает" итерацию и возвращает текущее значение накопителя.
const isOdd = (acc, x) => x % 2 === 1; const xs = [1, 3, 5, 60, 777, 800]; R.reduceWhile(isOdd, R.add, 0, xs); //=> 9 const ys = [2, 4, 6] R.reduceWhile(isOdd, R.add, 111, ys); //=> 111
reject Добавлена в v0.1.0
Filterable f => (a → Boolean) → f a → f a
Параметры
-
pred -
filterable
Возвращает
- Массив
Дополнение к filter.
Действует как преобразователь, если преобразователь задан в позиции списка. Фильтруемые объекты включают простые объекты или любые объекты, имеющие метод фильтра, такие как Array.
См. также filter, transduce, addIndex.
const isOdd = (n) => n % 2 === 1;
R.reject(isOdd, [1, 2, 3, 4]); //=> [2, 4]
R.reject(isOdd, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4} remove Добавлена в v0.2.2
Number → Number → [a] → [a]
Параметры
-
startПозиция для начала удаления элементов
-
countКоличество элементов для удаления
-
listСписок, из которого нужно удалить
Возвращает
- Массив Новый массив с удалёнными элементами из `start` с количеством `count`.
Удаляет подсписок list, начиная с индекса start и содержащий count элементов. Обратите внимание, что это не деструктивно: возвращает копию списка с изменениями. В процессе применения этой функции списки не пострадали.
См. также without.
R.remove(2, 3, [1,2,3,4,5,6,7,8]); //=> [1,2,6,7,8]
repeat Добавлена в v0.1.1
a → n → [a]
Параметры
-
valueЗначение для повторения.
-
nЖелаемый размер выходного списка.
Возвращает
- Массив Новый массив, содержащий `n` значений `value`.
Возвращает фиксированный список размером n с указанным одинаковым значением.
См. также times.
R.repeat('hi', 5); //=> ['hi', 'hi', 'hi', 'hi', 'hi']
const obj = {};
const repeatedObjs = R.repeat(obj, 5); //=> [{}, {}, {}, {}, {}]
repeatedObjs[0] === repeatedObjs[1]; //=> true replace Добавлена в v0.7.0
RegExp|String → String → String → String
Параметры
-
patternРегулярное выражение или подстрока для совпадения.
-
replacementСтрока для замены совпадений.
-
strСтрока, в которой нужно выполнить поиск и замену.
Возвращает
- Строка Результат.
Заменяет подстроку или совпадение по регулярному выражению в строке на замену.
Первые два параметра соответствуют параметрам функции String.prototype.replace(), поэтому второй параметр также может быть функцией.
R.replace('foo', 'bar', 'foo foo foo'); //=> 'bar foo foo'
R.replace(/foo/, 'bar', 'foo foo foo'); //=> 'bar foo foo'
// Use the "g" (global) flag to replace all occurrences:
R.replace(/foo/g, 'bar', 'foo foo foo'); //=> 'bar bar bar' reverse Добавлена в v0.1.0
[a] → [a]
String → StringПараметры
-
list
Возвращает
- Массив
Возвращает новый список или строку с элементами или символами в обратном порядке.
R.reverse([1, 2, 3]); //=> [3, 2, 1]
R.reverse([1, 2]); //=> [2, 1]
R.reverse([1]); //=> [1]
R.reverse([]); //=> []
R.reverse('abc'); //=> 'cba'
R.reverse('ab'); //=> 'ba'
R.reverse('a'); //=> 'a'
R.reverse(''); //=> '' scan Добавлен в v0.10.0
((a, b) → a) → a → [b] → [a]
Параметры
-
fnФункция-итератор. Принимает два значения: накопитель и текущий элемент из массива
-
accЗначение накопителя.
-
listСписок для итерации.
Возвращает
- Массив Список всех промежуточных сокращённых значений.
Метод `scan` аналогичен методу reduce, но возвращает список последовательно сокращённых значений слева.
const numbers = [1, 2, 3, 4]; const factorials = R.scan(R.multiply, 1, numbers); //=> [1, 1, 2, 6, 24]
sequence Добавлен в v0.19.0
(Applicative f, Traversable t) => (a → f a) → t (f a) → f (t a)
Параметры
-
of -
traversable
Возвращает
- *
Преобразует Traversable типа Applicative в Applicative типа Traversable.
Вызывает метод sequence второго аргумента, если он присутствует.
См. также traverse.
R.sequence(Maybe.of, [Just(1), Just(2), Just(3)]); //=> Just([1, 2, 3]) R.sequence(Maybe.of, [Just(1), Just(2), Nothing()]); //=> Nothing() R.sequence(R.of, Just([1, 2, 3])); //=> [Just(1), Just(2), Just(3)] R.sequence(R.of, Nothing()); //=> [Nothing()]
set Добавлен в v0.16.0
Lens s a → a → s → s
Lens s a = Functor f => (a → f a) → s → f sПараметры
-
lens -
v -
x
Возвращает
- *
Возвращает результат «установки» части заданной структуры данных, выделенной заданным объектом линзы, на заданное значение.
См. также prop, lensIndex, lensProp.
const xLens = R.lensProp('x');
R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2}
R.set(xLens, 8, {x: 1, y: 2}); //=> {x: 8, y: 2} slice Добавлен в v0.1.4
Number → Number → [a] → [a]
Number → Number → String → StringПараметры
-
fromIndexНачальный индекс (включительно).
-
toIndexКонечный индекс (исключительно).
-
list
Возвращает
- *
Возвращает элементы данного списка или строки (или объекта с методом slice) с fromIndex (включительно) по toIndex (исключительно).
Вызывает метод slice третьего аргумента, если он присутствует.
R.slice(1, 3, ['a', 'b', 'c', 'd']); //=> ['b', 'c'] R.slice(1, Infinity, ['a', 'b', 'c', 'd']); //=> ['b', 'c', 'd'] R.slice(0, -1, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c'] R.slice(-3, -1, ['a', 'b', 'c', 'd']); //=> ['b', 'c'] R.slice(0, 3, 'ramda'); //=> 'ram'
sort Добавлен в v0.1.0
((a, a) → Number) → [a] → [a]
Параметры
-
comparatorФункция сортировки :: a -> b -> Int
-
listСписок для сортировки
Возвращает
- Массив новый массив с отсортированными элементами в соответствии с функцией сравнения.
Возвращает копию списка, отсортированного в соответствии с функцией сравнения, которая должна принимать два значения одновременно и возвращать отрицательное число, если первое значение меньше, положительное число, если оно больше, и ноль, если они равны. Обратите внимание, что это копия списка. Она не изменяет оригинал.
const diff = function(a, b) { return a - b; };
R.sort(diff, [4,2,7,5]); //=> [2, 4, 5, 7] sortBy Добавлен в v0.1.0
Ord b => (a → b) → [a] → [a]
Параметры
-
fn -
listСписок для сортировки.
Возвращает
- Массив Новый список, отсортированный по ключам, сгенерированным функцией `fn`.
Сортирует список в соответствии с предоставленной функцией.
const sortByFirstItem = R.sortBy(R.prop(0));
const pairs = [[-1, 1], [-2, 2], [-3, 3]];
sortByFirstItem(pairs); //=> [[-3, 3], [-2, 2], [-1, 1]]
const sortByNameCaseInsensitive = R.sortBy(R.compose(R.toLower, R.prop('name')));
const alice = {
name: 'ALICE',
age: 101
};
const bob = {
name: 'Bob',
age: -10
};
const clara = {
name: 'clara',
age: 314.159
};
const people = [clara, bob, alice];
sortByNameCaseInsensitive(people); //=> [alice, bob, clara] sortWith Добавлен в v0.23.0
[(a, a) → Number] → [a] → [a]
Параметры
-
functionsСписок функций сравнения.
-
listСписок для сортировки.
Возвращает
- Массив Новый список, отсортированный в соответствии с функциями сравнения.
Сортирует список в соответствии со списком функций сравнения.
const alice = {
name: 'alice',
age: 40
};
const bob = {
name: 'bob',
age: 30
};
const clara = {
name: 'clara',
age: 40
};
const people = [clara, bob, alice];
const ageNameSort = R.sortWith([
R.descend(R.prop('age')),
R.ascend(R.prop('name'))
]);
ageNameSort(people); //=> [alice, clara, bob] split Добавлен в v0.1.0
(String | RegExp) → String → [String]
Параметры
-
sepШаблон.
-
strСтрока, которую нужно разделить на массив.
Возвращает
- Массив Массив строк из `str`, разделённых `sep`.
Разделяет строку на массив строк на основе заданного разделителя.
См. также join.
const pathComponents = R.split('/');
R.tail(pathComponents('/usr/local/bin/node')); //=> ['usr', 'local', 'bin', 'node']
R.split('.', 'a.b.c.xyz.d'); //=> ['a', 'b', 'c', 'xyz', 'd'] splitAt Добавлен в v0.19.0
Number → [a] → [[a], [a]]
Number → String → [String, String]Параметры
-
indexИндекс, на котором массив/строка делится.
-
arrayМассив/строка, подлежащая разделению.
Возвращает
- Массив
Разделяет заданный список или строку по заданному индексу.
R.splitAt(1, [1, 2, 3]); //=> [[1], [2, 3]] R.splitAt(5, 'hello world'); //=> ['hello', ' world'] R.splitAt(-1, 'foobar'); //=> ['fooba', 'r']
splitEvery Добавлен в v0.16.0
Number → [a] → [[a]]
Number → String → [String]Параметры
-
n -
list
Возвращает
- Массив
Разделяет коллекцию на фрагменты заданной длины.
R.splitEvery(3, [1, 2, 3, 4, 5, 6, 7]); //=> [[1, 2, 3], [4, 5, 6], [7]] R.splitEvery(3, 'foobarbaz'); //=> ['foo', 'bar', 'baz']
splitWhen Добавлен в v0.19.0
(a → Boolean) → [a] → [[a], [a]]
Параметры
-
predПредикат, определяющий, где массив делится.
-
listМассив, подлежащий разделению.
Возвращает
- Массив
Принимает список и предикат и возвращает пару списков со следующими свойствами:
- результат конкатенации двух выходных списков эквивалентен входному списку;
- ни один из элементов первого выходного списка не удовлетворяет предикату; и
- если второй выходной список не пустой, его первый элемент удовлетворяет предикату.
R.splitWhen(R.equals(2), [1, 2, 3, 1, 2, 3]); //=> [[1], [2, 3, 1, 2, 3]]
startsWith Добавлен в v0.24.0
[a] → [a] → Boolean
String → String → BooleanПараметры
-
prefix -
list
Возвращает
- Булево
Проверяет, начинается ли список с указанного подсписка.
Аналогично, проверяет, начинается ли строка с указанной подстроки.
См. также endsWith.
R.startsWith('a', 'abc') //=> true
R.startsWith('b', 'abc') //=> false
R.startsWith(['a'], ['a', 'b', 'c']) //=> true
R.startsWith(['b'], ['a', 'b', 'c']) //=> false subtract Добавлен в v0.1.0
Number → Number → Number
Параметры
-
aПервое значение.
-
bВторое значение.
Возвращает
- Число Результат `a - b`.
Вычитает второй аргумент из первого.
См. также add.
R.subtract(10, 8); //=> 2 const minus5 = R.subtract(R.__, 5); minus5(17); //=> 12 const complementaryAngle = R.subtract(90); complementaryAngle(30); //=> 60 complementaryAngle(72); //=> 18
sum Добавлен в v0.1.0
[Number] → Number
Параметры
-
listМассив чисел
Возвращает
- Число Сумма всех чисел в списке.
Суммирует все элементы списка.
См. также reduce.
R.sum([2,4,6,8,100,1]); //=> 121
symmetricDifference Добавлен в v0.19.0
[*] → [*] → [*]
Параметры
-
list1Первый список.
-
list2Второй список.
Возвращает
- Массив Элементы в `list1` или `list2`, но не в обоих.
Находит множество (т.е. без дубликатов) всех элементов, содержащихся в первом или втором списке, но не в обоих.
См. также symmetricDifferenceWith, difference, differenceWith.
R.symmetricDifference([1,2,3,4], [7,6,5,4,3]); //=> [1,2,7,6,5] R.symmetricDifference([7,6,5,4,3], [1,2,3,4]); //=> [7,6,5,1,2]
symmetricDifferenceWith Добавлен в v0.19.0
((a, a) → Boolean) → [a] → [a] → [a]
Параметры
-
predПредикат, используемый для проверки равенства двух элементов.
-
list1Первый список.
-
list2Второй список.
Возвращает
- Массив Элементы в `list1` или `list2`, но не в обоих.
Находит множество (т.е. без дубликатов) всех элементов, содержащихся в первом или втором списке, но не в обоих. Дублирование определяется значением, возвращаемым при применении предоставленного предиката к двум элементам списка.
См. также symmetricDifference, difference, differenceWith.
const eqA = R.eqBy(R.prop('a'));
const l1 = [{a: 1}, {a: 2}, {a: 3}, {a: 4}];
const l2 = [{a: 3}, {a: 4}, {a: 5}, {a: 6}];
R.symmetricDifferenceWith(eqA, l1, l2); //=> [{a: 1}, {a: 2}, {a: 5}, {a: 6}] T Добавлен в v0.9.0
* → Boolean
Параметры
Возвращает
- Boolean
Функция, которая всегда возвращает true. Любые переданные параметры игнорируются.
См. также F.
R.T(); //=> true
tail Добавлен в v0.1.0
[a] → [a]
String → StringПараметры
-
list
Возвращает
- *
Возвращает все элементы списка или строки (или объекта с методом tail) кроме первого.
Передаёт вызов методу slice первого аргумента, если он присутствует.
R.tail([1, 2, 3]); //=> [2, 3]
R.tail([1, 2]); //=> [2]
R.tail([1]); //=> []
R.tail([]); //=> []
R.tail('abc'); //=> 'bc'
R.tail('ab'); //=> 'b'
R.tail('a'); //=> ''
R.tail(''); //=> '' take Добавлен в v0.1.0
Number → [a] → [a]
Number → String → StringПараметры
-
n -
list
Возвращает
- *
Возвращает первые n элементы заданного списка, строки или преобразователя/трансформатора (или объекта с методом take).
Передаёт вызов методу take второго аргумента, если он присутствует.
См. также drop.
R.take(1, ['foo', 'bar', 'baz']); //=> ['foo'] R.take(2, ['foo', 'bar', 'baz']); //=> ['foo', 'bar'] R.take(3, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] R.take(4, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] R.take(3, 'ramda'); //=> 'ram' const personnel = [ 'Dave Brubeck', 'Paul Desmond', 'Eugene Wright', 'Joe Morello', 'Gerry Mulligan', 'Bob Bates', 'Joe Dodge', 'Ron Crotty' ]; const takeFive = R.take(5); takeFive(personnel); //=> ['Dave Brubeck', 'Paul Desmond', 'Eugene Wright', 'Joe Morello', 'Gerry Mulligan']
takeLast Добавлен в v0.16.0
Number → [a] → [a]
Number → String → StringПараметры
-
nКоличество возвращаемых элементов.
-
xsКоллекция для обработки.
Возвращает
- Array
Возвращает новый список, содержащий последние n элементы заданного списка. Если n > list.length, возвращает список из list.length элементов.
См. также dropLast.
R.takeLast(1, ['foo', 'bar', 'baz']); //=> ['baz'] R.takeLast(2, ['foo', 'bar', 'baz']); //=> ['bar', 'baz'] R.takeLast(3, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] R.takeLast(4, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] R.takeLast(3, 'ramda'); //=> 'mda'
takeLastWhile Добавлен в v0.16.0
(a → Boolean) → [a] → [a]
(a → Boolean) → String → StringПараметры
-
fnФункция, вызываемая на каждой итерации.
-
xsКоллекция для итерирования.
Возвращает
- Array Новый массив.
Возвращает новый список, содержащий последние n элементы данного списка, передавая каждое значение в функцию-предикат, и завершая выполнение, когда функция-предикат возвращает false. Исключает элемент, вызвавший возвращение false функцией-предикатом. Функция-предикат получает один аргумент: (значение).
См. также dropLastWhile, addIndex.
const isNotOne = x => x !== 1; R.takeLastWhile(isNotOne, [1, 2, 3, 4]); //=> [2, 3, 4] R.takeLastWhile(x => x !== 'R' , 'Ramda'); //=> 'amda'
takeWhile Добавлен в v0.1.0
(a → Boolean) → [a] → [a]
(a → Boolean) → String → StringПараметры
-
fnФункция, вызываемая на каждой итерации.
-
xsКоллекция для итерирования.
Возвращает
- Array Новый массив.
Возвращает новый список, содержащий первые n элементы данного списка, передавая каждое значение в функцию-предикат, и завершая выполнение, когда функция-предикат возвращает false. Исключает элемент, вызвавший возвращение false функцией-предикатом. Функция-предикат получает один аргумент: (значение).
Передаёт вызов методу takeWhile второго аргумента, если он присутствует.
Выступает в качестве преобразователя, если в позиции списка передан преобразователь.
См. также dropWhile, transduce, addIndex.
const isNotFour = x => x !== 4; R.takeWhile(isNotFour, [1, 2, 3, 4, 3, 2, 1]); //=> [1, 2, 3] R.takeWhile(x => x !== 'd' , 'Ramda'); //=> 'Ram'
tap Добавлен в v0.1.0
(a → *) → a → a
Параметры
-
fnФункция, вызываемая с
x. Возвращаемое значениеfnбудет проигнорировано. -
x
Возвращает
- * `x`.
Вызывает заданную функцию с переданным объектом, а затем возвращает объект.
Выступает в качестве преобразователя, если второй параметр является преобразователем.
const sayX = x => console.log('x is ' + x);
R.tap(sayX, 100); //=> 100
// logs 'x is 100' test Добавлен в v0.12.0
RegExp → String → Boolean
Параметры
-
pattern -
str
Возвращает
- Boolean
Определяет, соответствует ли заданная строка заданному регулярному выражению.
См. также match.
R.test(/^x/, 'xyz'); //=> true R.test(/^y/, 'xyz'); //=> false
thunkify Добавлен в v0.26.0
((a, b, …, j) → k) → (a, b, …, j) → (() → k)
Параметры
-
fnФункция, которую нужно обернуть в функцию-замыкание.
Возвращает
- function Ожидает аргументы для `fn` и возвращает новую функцию, которая, при вызове, применяет эти аргументы к `fn`.
Создаёт функцию-замыкание из функции. Функция-замыкание откладывает вычисление результата до момента необходимости, обеспечивая ленивое вычисление аргументов.
См. также partial, partialRight.
R.thunkify(R.identity)(42)(); //=> 42 R.thunkify((a, b) => a + b)(25, 17)(); //=> 42
times Добавлен в v0.2.3
(Number → a) → Number → [a]
Параметры
-
fnФункция для вызова. Получает один аргумент — текущее значение
n. -
nЗначение между
0иn - 1. Инкрементируется после каждого вызова функции.
Возвращает
- Array Массив, содержащий возвращаемые значения всех вызовов `fn`.
Вызывает входную функцию n раз, возвращая массив, содержащий результаты этих вызовов функции.
Функция fn получает один аргумент: Текущее значение n, которое начинается с 0 и постепенно инкрементируется до n - 1.
См. также repeat.
R.times(R.identity, 5); //=> [0, 1, 2, 3, 4]
toLower Добавлен в v0.9.0
String → String
Параметры
-
strСтрока для преобразования в нижний регистр.
Возвращает
- String Версия `str` в нижнем регистре.
Строка в нижнем регистре.
См. также toUpper.
R.toLower('XYZ'); //=> 'xyz' toPairs Добавлен в v0.4.0
{String: *} → [[String,*]] Параметры
-
objОбъект для извлечения данных.
Возвращает
- Array Массив массивов ключ-значение из собственных свойств объекта.
Преобразует объект в массив массивов ключ-значение. Используются только собственные свойства объекта. Обратите внимание, что порядок выходного массива не гарантированно будет одинаковым на разных платформах JavaScript.
См. также fromPairs.
R.toPairs({a: 1, b: 2, c: 3}); //=> [['a', 1], ['b', 2], ['c', 3]] toPairsIn Добавлен в v0.4.0
{String: *} → [[String,*]] Параметры
-
objОбъект для извлечения данных.
Возвращает
- Array Массив массивов ключ-значение из собственных и прототипных свойств объекта.
Преобразует объект в массив массивов ключ-значение. Используются собственные и прототипные свойства объекта. Обратите внимание, что порядок выходного массива не гарантированно будет одинаковым на разных платформах JavaScript.
const F = function() { this.x = 'X'; };
F.prototype.y = 'Y';
const f = new F();
R.toPairsIn(f); //=> [['x','X'], ['y','Y']] toString Добавлен в v0.14.0
* → String
Параметры
-
val
Возвращает
- String
Возвращает строковое представление данного значения. Применение eval к результату должно привести к значению, эквивалентному входному значению. Многие встроенные методы toString не удовлетворяют этому требованию.
Если данное значение является объектом с методом toString, отличным от Object.prototype.toString, этот метод вызывается без аргументов для получения возвращаемого значения. Это означает, что пользовательские конструкторские функции могут предоставить подходящий метод toString. Например:
function Point(x, y) {
this.x = x;
this.y = y;
}
Point.prototype.toString = function() {
return 'new Point(' + this.x + ', ' + this.y + ')';
};
R.toString(new Point(1, 2)); //=> 'new Point(1, 2)'
R.toString(42); //=> '42'
R.toString('abc'); //=> '"abc"'
R.toString([1, 2, 3]); //=> '[1, 2, 3]'
R.toString({foo: 1, bar: 2, baz: 3}); //=> '{"bar": 2, "baz": 3, "foo": 1}'
R.toString(new Date('2001-02-03T04:05:06Z')); //=> 'new Date("2001-02-03T04:05:06.000Z")' toUpper Добавлен в v0.9.0
String → String
Параметры
-
strСтрока для преобразования в верхний регистр.
Возвращает
- String Версия `str` в верхнем регистре.
Строка в верхнем регистре.
См. также toLower.
R.toUpper('abc'); //=> 'ABC' transduce Добавлен в v0.12.0
(c → c) → ((a, b) → a) → a → [b] → a
Параметры
-
xfФункция-преобразователь. Получает преобразователь и возвращает преобразователь.
-
fnФункция итератора. Принимает два значения, накопитель и текущий элемент из массива. Обернута как преобразователь, если необходимо, и используется для инициализации преобразователя.
-
accНачальное значение накопителя.
-
listСписок для итерирования.
Возвращает
- * Конечное, накопленное значение.
Инициализирует преобразователь с использованием предоставленной функции итератора. Возвращает один элемент, итерируя по списку, последовательно вызывая преобразованную функцию итератора и передавая ей значение аккумулятора и текущее значение из массива, а затем передавая результат следующему вызову.
Функция итератора получает два значения: (acc, value). Она будет обернута как преобразователь для инициализации преобразователя. Преобразователь можно передать напрямую вместо функции итератора. В обоих случаях итерация может быть остановлена досрочно с помощью функции R.reduced.
Преобразователь — это функция, которая принимает преобразователь и возвращает преобразователь и может быть составлена непосредственно.
Преобразователь — это объект, предоставляющий функцию итератора уменьшения с двумя аргументами, шаг, функцию начального значения с нулевым аргументом, init, и функцию извлечения результата с одним аргументом, result. Функция шага используется в качестве функции итератора в reduce. Функция result используется для преобразования конечного аккумулятора в тип возвращаемого значения и в большинстве случаев является R.identity. Функция init может быть использована для предоставления начального аккумулятора, но игнорируется transduce.
Итерация выполняется с помощью R.reduce после инициализации преобразователя.
См. также reduce, reduced, into.
const numbers = [1, 2, 3, 4]; const transducer = R.compose(R.map(R.add(1)), R.take(2)); R.transduce(transducer, R.flip(R.append), [], numbers); //=> [2, 3] const isOdd = (x) => x % 2 === 1; const firstOddTransducer = R.compose(R.filter(isOdd), R.take(1)); R.transduce(firstOddTransducer, R.flip(R.append), [], R.range(0, 100)); //=> [1]
transpose Добавлен в v0.19.0
[[a]] → [[a]]
Параметры
-
listДвумерный список
Возвращает
- Массив Двумерный список
Поворачивает строки и столбцы двумерного списка. При передаче списка из n списков длиной x, возвращает список из x списков длиной n.
R.transpose([[1, 'a'], [2, 'b'], [3, 'c']]) //=> [[1, 2, 3], ['a', 'b', 'c']] R.transpose([[1, 2, 3], ['a', 'b', 'c']]) //=> [[1, 'a'], [2, 'b'], [3, 'c']] // If some of the rows are shorter than the following rows, their elements are skipped: R.transpose([[10, 11], [20], [], [30, 31, 32]]) //=> [[10, 20, 30], [11, 31], [32]]
traverse Добавлен в v0.19.0
(Applicative f, Traversable t) => (a → f a) → (a → f b) → t a → f (t b)
Параметры
-
of -
f -
traversable
Возвращает
- *
Применяет функцию, возвращающую Applicative, к Traversable, а затем использует sequence для преобразования получившегося Traversable Applicative в Applicative Traversable.
Вызывает метод traverse третьего аргумента, если он присутствует.
См. также sequence.
// Returns `Maybe.Nothing` if the given divisor is `0` const safeDiv = n => d => d === 0 ? Maybe.Nothing() : Maybe.Just(n / d) R.traverse(Maybe.of, safeDiv(10), [2, 4, 5]); //=> Maybe.Just([5, 2.5, 2]) R.traverse(Maybe.of, safeDiv(10), [2, 0, 5]); //=> Maybe.Nothing
trim Добавлен в v0.6.0
String → String
Параметры
-
strСтрока, которую нужно обрезать.
Возвращает
- Строка Обрезанная версия `str`.
Удаляет (обрезает) пробелы с обоих концов строки.
R.trim(' xyz '); //=> 'xyz'
R.map(R.trim, R.split(',', 'x, y, z')); //=> ['x', 'y', 'z'] tryCatch Добавлен в v0.20.0
(…x → a) → ((e, …x) → a) → (…x → a)
Параметры
-
tryerФункция, которая может вызвать исключение.
-
catcherФункция, которая будет вычислена, если
tryerвызовет исключение.
Возвращает
- функция Новая функция, которая перехватывает исключения и отправляет их в обработчик.
tryCatch принимает две функции, tryer и catcher. Возвращаемая функция вычисляет tryer; если она не вызывает исключение, она просто возвращает результат. Если tryer вызывает исключение, возвращаемая функция вычисляет функцию catcher и возвращает её результат. Обратите внимание, что для эффективного использования с этой функцией, как tryer, так и catcher функции должны возвращать результаты одного типа.
R.tryCatch(R.prop('x'), R.F)({x: true}); //=> true
R.tryCatch(() => { throw 'foo'}, R.always('catched'))('bar') // => 'catched'
R.tryCatch(R.times(R.identity), R.always([]))('s') // => []
R.tryCatch(() => { throw 'this is not a valid value'}, (err, value)=>({error : err, value }))('bar') // => {'error': 'this is not a valid value', 'value': 'bar'} type Добавлен в v0.8.0
(* → {*}) → String Параметры
-
valЗначение для проверки
Возвращает
- Строка
Даёт однословное описание (встроенного) типа значения, возвращая ответы, такие как 'Объект', 'Число', 'Массив' или 'Null'. Не пытается различать пользовательские типы объектов, относя их все к типу 'Объект'.
R.type({}); //=> "Object"
R.type(1); //=> "Number"
R.type(false); //=> "Boolean"
R.type('s'); //=> "String"
R.type(null); //=> "Null"
R.type([]); //=> "Array"
R.type(/[A-z]/); //=> "RegExp"
R.type(() => {}); //=> "Function"
R.type(undefined); //=> "Undefined" unapply Добавлен в v0.8.0
([*…] → a) → (*… → a)
Параметры
-
fn
Возвращает
- функция
Принимает функцию fn, которая принимает массив в качестве единственного аргумента, и возвращает функцию, которая:
- принимает любое количество позиционных аргументов;
- передает эти аргументы
fnкак массив; и - возвращает результат.
Другими словами, R.unapply извлекает функцию с переменным числом аргументов из функции, которая принимает массив. R.unapply является обратной функцией R.apply.
См. также apply.
R.unapply(JSON.stringify)(1, 2, 3); //=> '[1,2,3]'
unary Добавлен в v0.2.0
(* → b) → (a → b)
Параметры
-
fnФункция, которую нужно обернуть.
Возвращает
- функция Новая функция, которая оборачивает `fn`. Новая функция гарантированно имеет арность 1.
Оборачивает функцию любой арности (включая нулевую) в функцию, которая принимает ровно 1 параметр. Любые дополнительные параметры не будут переданы предоставленной функции.
const takesTwoArgs = function(a, b) {
return [a, b];
};
takesTwoArgs.length; //=> 2
takesTwoArgs(1, 2); //=> [1, 2]
const takesOneArg = R.unary(takesTwoArgs);
takesOneArg.length; //=> 1
// Only 1 argument is passed to the wrapped function
takesOneArg(1, 2); //=> [1, undefined] uncurryN Добавлен в v0.14.0
Number → (a → b) → (a → c)
Параметры
-
lengthАрность возвращаемой функции.
-
fnФункция, которую нужно разворачивать.
Возвращает
- функция Новая функция.
Возвращает функцию арности n из (ручной) частично применённой функции.
См. также curry.
const addFour = a => b => c => d => a + b + c + d; const uncurriedAddFour = R.uncurryN(4, addFour); uncurriedAddFour(1, 2, 3, 4); //=> 10
unfold Добавлен в v0.10.0
(a → [b]) → * → [b]
Параметры
-
fnФункция итератора. Принимает один аргумент,
seed, и возвращает либо false для остановки итерации, либо массив длиной два для продолжения. Элемент с индексом 0 этого массива будет добавлен в результирующий массив, а элемент с индексом 1 будет передан следующему вызовуfn. -
seedЗначение-семя.
Возвращает
- Массив Конечный список.
Строит список из значения-семени. Принимает функцию итератора, которая возвращает либо false для остановки итерации, либо массив длиной 2, содержащий значение для добавления в результирующий список и значение-семя для использования в следующем вызове функции итератора.
Функция итератора получает один аргумент: (seed).
const f = n => n > 50 ? false : [-n, n + 10]; R.unfold(f, 10); //=> [-10, -20, -30, -40, -50]
union Добавлен в v0.1.0
[*] → [*] → [*]
Параметры
-
asПервый список.
-
bsВторой список.
Возвращает
- Массив Первый и второй списки, соединённые, без дубликатов.
Объединяет два списка в множество (т. е. без дубликатов), состоящее из элементов каждого списка.
R.union([1, 2, 3], [2, 3, 4]); //=> [1, 2, 3, 4]
unionWith Добавлен в v0.1.0
((a, a) → Boolean) → [*] → [*] → [*]
Параметры
-
predПредикат, используемый для проверки, равны ли два элемента.
-
list1Первый список.
-
list2Второй список.
Возвращает
- Массив Первый и второй списки, соединённые, без дубликатов.
Объединяет два списка в множество (т. е. без дубликатов), состоящее из элементов каждого списка. Дублирование определяется по значению, возвращаемому при применении предоставленного предиката к двум элементам списка.
См. также union.
const l1 = [{a: 1}, {a: 2}];
const l2 = [{a: 1}, {a: 4}];
R.unionWith(R.eqBy(R.prop('a')), l1, l2); //=> [{a: 1}, {a: 2}, {a: 4}] uniq Добавлен в v0.1.0
[a] → [a]
Параметры
-
listМассив для рассмотрения.
Возвращает
- Массив Список уникальных элементов.
Возвращает новый список, содержащий только одну копию каждого элемента из исходного списка. Для определения равенства используется R.equals.
R.uniq([1, 1, 2, 1]); //=> [1, 2] R.uniq([1, '1']); //=> [1, '1'] R.uniq([[42], [42]]); //=> [[42]]
uniqBy Добавлен в v0.16.0
(a → b) → [a] → [a]
Параметры
-
fnФункция, используемая для получения значения, используемого во время сравнения.
-
listМассив для рассмотрения.
Возвращает
- Массив Список уникальных элементов.
Возвращает новый список, содержащий только одну копию каждого элемента из исходного списка, на основе значения, возвращаемого функцией, применяемой к каждому элементу списка. Предпочитает первый элемент, если функция возвращает одинаковое значение для двух элементов. Для сравнения используется R.equals.
R.uniqBy(Math.abs, [-1, -5, 2, 10, 1, 2]); //=> [-1, -5, 2, 10]
uniqWith Добавлен в v0.2.0
((a, a) → Boolean) → [a] → [a]
Параметры
-
predПредикат, используемый для проверки равенства двух элементов.
-
listМассив для проверки.
Возвращает
- Массив Список уникальных элементов.
Возвращает новый список, содержащий только по одному экземпляру каждого элемента из исходного списка, основываясь на значении, полученном при применении предоставленного предиката к двум элементам списка. Предпочитает первый элемент, если два элемента равны с точки зрения предиката.
const strEq = R.eqBy(String);
R.uniqWith(strEq)([1, '1', 2, 1]); //=> [1, 2]
R.uniqWith(strEq)([{}, {}]); //=> [{}]
R.uniqWith(strEq)([1, '1', 1]); //=> [1]
R.uniqWith(strEq)(['1', 1, 1]); //=> ['1'] unless Добавлен в v0.18.0
(a → Boolean) → (a → a) → a → a
Параметры
-
predФункция-предикат
-
whenFalseFnФункция, вызываемая, когда значение
predложно. -
xОбъект, с которым проверяется функция
predи который передаётся вwhenFalseFnпри необходимости.
Возвращает
- * Либо `x`, либо результат применения `x` к `whenFalseFn`.
Проверяет последний аргумент, передавая его в заданную функцию-предикат. Если предикат не удовлетворён, функция вернёт результат вызова функции whenFalseFn с тем же аргументом. Если предикат удовлетворён, аргумент возвращается как есть.
let safeInc = R.unless(R.isNil, R.inc); safeInc(null); //=> null safeInc(1); //=> 2
unnest Добавлен в v0.3.0
Chain c => c (c a) → c a
Параметры
-
list
Возвращает
- *
Краткая запись для R.chain(R.identity), которая удаляет один уровень вложенности из любого Chain.
R.unnest([1, [2], [[3]]]); //=> [1, 2, [3]] R.unnest([[1, 2], [3, 4], [5, 6]]); //=> [1, 2, 3, 4, 5, 6]
until Добавлен в v0.20.0
(a → Boolean) → (a → a) → a → a
Параметры
-
predФункция-предикат
-
fnФункция итерации
-
initНачальное значение
Возвращает
- * Конечное значение, удовлетворяющее предикату
Принимает предикат, функцию преобразования и начальное значение и возвращает значение того же типа, что и начальное значение. Это делается путём применения преобразования до тех пор, пока предикат не будет удовлетворён, после чего возвращается удовлетворяющее значение.
R.until(R.gt(R.__, 100), R.multiply(2))(1) // => 128
update Добавлен в v0.14.0
Number → a → [a] → [a]
Параметры
-
idxИндекс для обновления.
-
xЗначение, которое должно существовать в данном индексе возвращаемого массива.
-
listИсточник массивоподобного объекта, подлежащего обновлению.
Возвращает
- Массив Копия `list` со значением в индексе `idx`, заменённым на `x`.
Возвращает новую копию массива с элементом в указанном индексе, заменённым заданным значением.
См. также adjust.
R.update(1, '_', ['a', 'b', 'c']); //=> ['a', '_', 'c'] R.update(-1, '_', ['a', 'b', 'c']); //=> ['a', 'b', '_']
useWith Добавлен в v0.1.0
((x1, x2, …) → z) → [(a → x1), (b → x2), …] → (a → b → … → z)
Параметры
-
fnФункция для обертывания.
-
transformersСписок функций преобразования.
Возвращает
- функция Обёрнутая функция.
Принимает функцию fn и список функций преобразования и возвращает новую каррированную функцию. Когда вызывается новая функция, она вызывает функцию fn с параметрами, состоящими из результата вызова каждой предоставленной функции-обработчика над последовательными аргументами новой функции.
Если в возвращённую функцию передано больше аргументов, чем функций-преобразователей, эти аргументы передаются напрямую в fn в качестве дополнительных параметров. Если ожидаются дополнительные аргументы, которые не нужно преобразовывать, хотя вы можете их игнорировать, лучше передать функцию тождества, чтобы новая функция сообщала правильную арность.
См. также converge.
R.useWith(Math.pow, [R.identity, R.identity])(3, 4); //=> 81 R.useWith(Math.pow, [R.identity, R.identity])(3)(4); //=> 81 R.useWith(Math.pow, [R.dec, R.inc])(3, 4); //=> 32 R.useWith(Math.pow, [R.dec, R.inc])(3)(4); //=> 32
values Добавлен в v0.1.0
{k: v} → [v] Параметры
-
objОбъект для извлечения значений.
Возвращает
- Массив Массив значений собственных свойств объекта.
Возвращает список всех перечисляемых собственных свойств предоставленного объекта. Обратите внимание, что порядок выходного массива не гарантируется на разных платформах JS.
R.values({a: 1, b: 2, c: 3}); //=> [1, 2, 3] valuesIn Добавлен в v0.2.0
{k: v} → [v] Параметры
-
objОбъект для извлечения значений.
Возвращает
- Массив Массив значений собственных и свойств прототипа объекта.
Возвращает список всех свойств, включая свойства прототипов, предоставленного объекта. Обратите внимание, что порядок выходного массива не гарантированно будет одинаковым на разных платформах JS.
const F = function() { this.x = 'X'; };
F.prototype.y = 'Y';
const f = new F();
R.valuesIn(f); //=> ['X', 'Y'] view Добавлен в v0.16.0
Lens s a → s → a
Lens s a = Functor f => (a → f a) → s → f sПараметры
-
lens -
x
Возвращает
- *
Возвращает «представление» заданной структуры данных, определяемой заданным объективом. Фокус объектива определяет, какая часть структуры данных видна.
См. также prop, lensIndex, lensProp.
const xLens = R.lensProp('x');
R.view(xLens, {x: 1, y: 2}); //=> 1
R.view(xLens, {x: 4, y: 2}); //=> 4 when Добавлен в v0.18.0
(a → Boolean) → (a → a) → a → a
Параметры
-
predФункция-предикат
-
whenTrueFnФункция, вызываемая, когда значение
conditionистинно. -
xОбъект, с которым проверяется функция
predи который передаётся вwhenTrueFnпри необходимости.
Возвращает
- * Либо `x`, либо результат применения `x` к `whenTrueFn`.
Проверяет последний аргумент, передавая его в заданную функцию-предикат. Если предикат удовлетворён, функция вернёт результат вызова функции whenTrueFn с тем же аргументом. Если предикат не удовлетворён, аргумент возвращается как есть.
См. также ifElse, unless, cond.
// truncate :: String -> String
const truncate = R.when(
R.propSatisfies(R.gt(R.__, 10), 'length'),
R.pipe(R.take(10), R.append('…'), R.join(''))
);
truncate('12345'); //=> '12345'
truncate('0123456789ABC'); //=> '0123456789…' where Добавлен в v0.1.1
{String: (* → Boolean)} → {String: *} → Boolean Параметры
-
spec -
testObj
Возвращает
- Boolean
Принимает объект-спецификацию и объект-тест; возвращает true, если тест соответствует спецификации. Каждое собственное свойство спецификации должно быть функцией-предикатом. Каждый предикат применяется к значению соответствующего свойства объекта-теста. where возвращает true, если все предикаты возвращают true, false в противном случае.
where хорошо подходит для декларативного выражения ограничений для других функций, таких как filter и find.
См. также propSatisfies, whereEq.
// pred :: Object -> Boolean
const pred = R.where({
a: R.equals('foo'),
b: R.complement(R.equals('bar')),
x: R.gt(R.__, 10),
y: R.lt(R.__, 20)
});
pred({a: 'foo', b: 'xxx', x: 11, y: 19}); //=> true
pred({a: 'xxx', b: 'xxx', x: 11, y: 19}); //=> false
pred({a: 'foo', b: 'bar', x: 11, y: 19}); //=> false
pred({a: 'foo', b: 'xxx', x: 10, y: 19}); //=> false
pred({a: 'foo', b: 'xxx', x: 11, y: 20}); //=> false whereEq Добавлен в v0.14.0
{String: *} → {String: *} → Boolean Параметры
-
spec -
testObj
Возвращает
- Boolean
Принимает объект-спецификацию и объект-тест; возвращает true, если тест соответствует спецификации, иначе false. Объект соответствует спецификации, если для каждого собственного свойства спецификации доступ к этому свойству в объекте даёт то же значение (в терминах R.equals), что и доступ к этому свойству в спецификации.
whereEq — специализация where.
// pred :: Object -> Boolean
const pred = R.whereEq({a: 1, b: 2});
pred({a: 1}); //=> false
pred({a: 1, b: 2}); //=> true
pred({a: 1, b: 2, c: 3}); //=> true
pred({a: 1, b: 1}); //=> false without Добавлен в v0.19.0
[a] → [a] → [a]
Параметры
-
list1Значения, которые нужно удалить из
list2. -
list2Массив, из которого нужно удалить значения.
Возвращает
- Массив Новый массив без значений из `list1`.
Возвращает новый список без значений в первом аргументе. R.equals используется для определения равенства.
Выступает как трансформер, если в позиции списка задан трансформер.
См. также transduce, difference, remove.
R.without([1, 2], [1, 2, 1, 3, 4]); //=> [3, 4]
xor Добавлен в v0.27.0
a → b → Boolean
Параметры
-
a -
b
- Булево истина, если один из аргументов имеет истинное значение, а другой — ложное
Логическая операция исключающего дизъюнкции. Возвращает true если один из аргументов имеет истинное значение, а другой — ложное. В противном случае возвращает false.
R.xor(true, true); //=> false R.xor(true, false); //=> true R.xor(false, true); //=> true R.xor(false, false); //=> false
xprod Добавлен в v0.1.0
[a] → [b] → [[a,b]]
Параметры
-
asПервый список.
-
bsВторой список.
Возвращает
- Массив Список, полученный путём объединения каждой возможной пары из `as` и `bs` в пары (`[a, b]`).
Создаёт новый список из двух предоставленных списков, создавая каждую возможную пару из элементов списков.
R.xprod([1, 2], ['a', 'b']); //=> [[1, 'a'], [1, 'b'], [2, 'a'], [2, 'b']]
zip Добавлен в v0.1.0
[a] → [b] → [[a,b]]
Параметры
-
list1Первый массив для рассмотрения.
-
list2Второй массив для рассмотрения.
Возвращает
- Массив Список, полученный путём сопоставления элементов с одинаковыми индексами из `list1` и `list2`.
Создаёт новый список из двух предоставленных путём сопоставления элементов с одинаковыми позициями из обоих списков. Возвращаемый список усечён до длины меньшего из двух входных списков. Примечание: zip эквивалентно zipWith(function(a, b) { return [a, b] }).
R.zip([1, 2, 3], ['a', 'b', 'c']); //=> [[1, 'a'], [2, 'b'], [3, 'c']]
zipObj Добавлен в v0.3.0
[String] → [*] → {String: *} Параметры
-
keysМассив, который будет свойствами выходного объекта.
-
valuesСписок значений выходного объекта.
Возвращает
- Объект Объект, полученный путём сопоставления элементов с одинаковыми индексами из `keys` и `values`.
Создаёт новый объект из списка ключей и списка значений. Сопоставление ключ/значение усечено до длины меньшего из двух списков. Примечание: zipObj эквивалентно pipe(zip, fromPairs).
R.zipObj(['a', 'b', 'c'], [1, 2, 3]); //=> {a: 1, b: 2, c: 3} zipWith Добавлен в v0.1.0
((a, b) → c) → [a] → [b] → [c]
Параметры
-
fnФункция, используемая для объединения двух элементов в одно значение.
-
list1Первый массив для рассмотрения.
-
list2Второй массив для рассмотрения.
Возвращает
- Массив Список, полученный путём объединения элементов с одинаковыми индексами из `list1` и `list2` с помощью `fn`.
Создаёт новый список из двух предоставленных, применяя функцию к каждой паре элементов с одинаковыми позициями в списках. Возвращаемый список усечён до длины меньшего из двух входных списков.
const f = (x, y) => {
// ...
};
R.zipWith(f, [1, 2, 3], ['a', 'b', 'c']);
//=> [f(1, 'a'), f(2, 'b'), f(3, 'c')]
© 2013–2020 Scott Sauyet and Michael Hurley
Licensed under the MIT License.
https://ramdajs.com/0.27.0/docs/