Skip to content

Latest commit

 

History

History
2571 lines (1747 loc) · 118 KB

DOCUMENTATION.md

File metadata and controls

2571 lines (1747 loc) · 118 KB

Документация

A, B, C, D, J, I, M, N, O, P, R, S, T, U, X, Z

A

⬆ вверх

B

⬆ вверх

C

⬆ вверх

D

⬆ вверх

E

F.

G

J

⬆ вверх

I

⬆ вверх

M


__

[Function]

_Добавлено в версии 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)
var greet = R.replace('{name}', R.__, 'Hello, {name}!');
greet('Alice'); //=> 'Hello, Alice!'

Попробуйте в REPL

add

[Math]

Number → Number → Number

Параметры:

a
b
вернет Number

Добавлено в версии v0.1.0

Добавляет два значения

Смотрите также subtract.

R.add(2, 3);       //=>  5
R.add(7)(10);      //=> 17

Попробуйте в REPL

⬆ вверх

addIndex

[Function]

((a … → b) … → [a] → *) → (a …, Int, [a] → b) … → [a] → *)

Параметры:

fn Функция итерации списка, которая не передает индекс или список в функцию обратного вызова(callback)
вернет function Изменена функция итерации списка, которая не передает (элемент, индекс, список) в его функцию обратного вызова(callback)

Добавлено в версии v0.15.0

Создает новую функцию итерации списка с уже существующей, с помощью добавления двух новых аргументов к функции обратного вызова: текущий индекс и весь список.

Это, в свою очередь, преобразует, например функцию R.map в функцию, которая больше напоминает Array.prototype.map. Обратите внимание на то, что это сработает только для функций, в которых итерирующая функция обратного вызова является первым аргументом, а список - последним. (Последнее может быть не важно, если аргумент списка не используется.)

var 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']

Попробуйте в REPL

⬆ вверх

adjust

[List]

(a → a) → Number → [a] → [a]

Параметры:

fn Функция которая будет применена
idx Индекс
list Массиво-подобный объект, чье значение будет заменено в указанном индексом месте.
вернет Array Копию передаваемого массиво-подобного объекта, с элементом (на месте согласно индексу idx) замененным значением которое вернулось после применения функции ' fn ' к существующему элементу.

Добавлено в версии v0.14.0

Применяет функцию к указанному индексом элемента в массиве, возвращая новую копию массива с элементом, на указанном индксом месте, замененным результатом примененной функции.

Смотрите также update.

R.adjust(R.add(10), 1, [1, 2, 3]);     //=> [1, 12, 3]
R.adjust(R.add(10))(1)([1, 2, 3]);     //=> [1, 12, 3]

Попробуйте в REPL

⬆ вверх

all

[List]

(a → Boolean) → [a] → Boolean

Параметры:

fn Функция предикат
list Массив, который должен быть оценен.
вернет Boolean true, если предикат удовлетворен каждым из элементов, в противном случае вернется false.

Добавлено в версии v0.1.0

Вернет true, если все элементы списка соответствуют предикату, false, если в списке нет ни одного который бы отвечал.

Применяет ко всем метод второго аргумента, если он присутствует.

Действует как преобразователь (трансдюсер), если трансформер указан на месте списка.

Смотрите также any, none, transduce.

var equals3 = R.equals(3);
R.all(equals3)([3, 3, 3, 3]); //=> true
R.all(equals3)([3, 3, 1, 3]); //=> false

Попробуйте в REPL

⬆ вверх

allPass

[Logic]

[(*… → Boolean)] → (*… → Boolean)

Параметры:

predicates массив предикатов, которые необходимо проверить
вернет: function объединенный предикат

Добавлено в версии v0.9.0

Принимает список предикатов и вернет предикат, который вернет true для заданного списка аргументов, если каждый из переданных предикатов удовлетворен теми аргументами.

Возвращенная функция является каррированной, чья арность совпадает с арностью предиката с высочайшей арностью.

Смотрите также anyPass

var isQueen = R.propEq('rank', 'Q');
var isSpade = R.propEq('suit', '♠︎');
var isQueenOfSpades = R.allPass([isQueen, isSpade]);

isQueenOfSpades({rank: 'Q', suit: '♣︎'}); //=> false
isQueenOfSpades({rank: 'Q', suit: '♠︎'}); //=> true

Попробуйте в REPL

⬆ вверх

always

[Function]

a → (* → a)

Параметры:

val Значение, которое необходимо обернуть в функцию
вернет function функция :: * -> val.

Добавлено в версии v0.1.0

Возвращает функцию, которая всегда возвращает заданное значение. Обратите внимание, что для непримитивов возвращаемое значение является ссылкой на исходное значение.

Эта функция известна как const, constant или K (для K combinator) в других языках и библиотеках.

var t = R.always('Tee');
t(); //=> 'Tee'

Попробуйте в REPL

⬆ вверх

and

[Logic]

a → b → a | b

Параметры:

a
b
вернет Any первый аргумент, если он имеет значение false, в противном случае второй аргумент.

Добавлено в версии v0.1.0

Возвращает true, если оба аргумента истинны, в противном случае - false.

Смотрите также both.

R.and(true, true); //=> true
R.and(true, false); //=> false
R.and(false, true); //=> false
R.and(false, false); //=> false

Попробуйте в REPL

⬆ вверх

any

[List]

(a → Boolean) → [a] → Boolean

Параметры:

fn Функция предикат
list Массив который должен быть оценен.
вернет Boolean true , если предикат удовлетворен хотя бы одним элементом, false в противном случае.

Добавлено в версии v0.1.0

Возвращает true, если хотя бы один из элементов списка соответствует предикату, иначе false.

Применяется к любому методу второго аргумента, если он присутствует.

Действует как преобразователь (трансдюсер), если трансформер указан на месте списка.

Смотрите также all, none, transduce.

var lessThan0 = R.flip(R.lt)(0);
var lessThan2 = R.flip(R.lt)(2);
R.any(lessThan0)([1, 2]); //=> false
R.any(lessThan2)([1, 2]); //=> true

Попробуйте в REPL

⬆ вверх

anyPass

[Logic]

[(*… → Boolean)] → (*… → Boolean)

Параметры:

predicates массив предикатов, которые необходимо проверить
вернет function объединенный предикат

Добавлено в версии v0.9.0

Принимает список предикатов и вернет предикат, который вернет true для заданного списка аргументов, если хотя бы один из переданных предикатов удовлетворен теми аргументами.

Возвращенная Функция является каррированной, чья арность совпадает с арностью предиката с высочайшей арностью.

Смотрите также allPass

var isClub = R.propEq('suit', '♣');
var isSpade = R.propEq('suit', '♠');
var isBlackCard = R.anyPass([isClub, isSpade]);

isBlackCard({rank: '10', suit: '♣'}); //=> true
isBlackCard({rank: 'Q', suit: '♠'}); //=> true
isBlackCard({rank: 'Q', suit: '♦'}); //=> false

Попробуйте в REPL

⬆ вверх

ap

[Function]

[a → b] → [a] → [b]

Apply f => f (a → b) → f a → f b

Параметры:

applyF
applyX
вернет *

Добавлено в версии v0.3.0

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"]

Попробуйте в REPL

⬆ вверх

aperture

[List]

Number → [a] → [[a]]

Параметры:

n Какого размера должны быть созданы массивы.
list Список, который нужно разбить на массивы с n-длиной.
вернет Array Финальный список массивов, каждый с длиной n.

Добавлено в версии v0.12.0

вернет новый список, составленный из массивов, каждый с длиной n последовательных элементов. Если n больше чем длина списка-вернется пустой список.

Действует как преобразователь(transducer), если трансформер(transformer) передан на месте списка.

Смотрите также 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]); //=> []

Попробуйте в REPL

⬆ вверх

append

[List]

a → [a] → [a]

Параметры:

el Элемент, который нужно добавить в конц списка.
list Список элементов к которому следует добавить элемент.
вернет Array Новый массив, включающий в себя элементы старого списка и в конце добавлен элемент el.

Добавлено в версии v0.1.0

вернет новый список, в котором находятся элементы переданные в качестве параметра list, и в конце элемент переданный в качестве аргумента el.

Смотрите также prepend.

R.append('tests', ['write', 'more']); //=> ['write', 'more', 'tests']
R.append('tests', []); //=> ['tests']
R.append(['tests'], ['write', 'more']); //=> ['write', 'more', ['tests']]

Попробуйте в REPL

⬆ вверх

apply

[Function]

(*… → a) → [*] → a

Параметры:

fn Функция, которая будет вызвана с аргументами args
args Аргументы, с которыми должна быть вызвана Функция fn.
вернет * результат Результат, равный fn(...args)

Добавлено в версии v0.7.0

Применяет функцию fn к списку аргументов args. Это полезно для создания функций фиксированной арности из функции с переменным числом аргументов. fn должна быть привязанной (bind) функцией, в случае если контекст важен.

Смотрите также call, unapply.

var nums = [1, 2, 3, -99, 42, 6, 7];
R.apply(Math.max, nums); //=> 42

Попробуйте в REPL

⬆ вверх

applySpec

[Function]

{k: ((a, b, …, m) → v)} → ((a, b, …, m) → {k: v})

Параметры:

spec Объект рекурсивно сопоставляет свойства с аргументами функции для получения значений этих свойств.
вернет function Функция, которая вернет объект с такой же структурой как и объект spec, с каждым свойством установленным в значение, которое было возвращено вызовом связанной функции с передаваемыми аргументами.
Добавлено в версии v0.20.0

Учитывая, что объект spec рекурсивно сопоставляет свойства функции, создается Функция, которая создает объект с такой же структурой, путем сопоставления каждого свойства с результатом вызова связанной с ним функции с передаваемыми аргументами.

Смотрите также converge, juxt.

var getMetrics = R.applySpec({
                                sum: R.add,
                                nested: { mul: R.multiply }
                             });
getMetrics(2, 4); // => { sum: 6, nested: { mul: 8 } }

Попробуйте в REPL

⬆ вверх

ascend

[Function]

Ord b => (a → b) → a → a → Number

Параметры:

fn Функция арностью один, которая вернет значение, которое можно сравнить.
a Первый элемент для сравнения.
b Второй элемент для сравнения.
вернет Number -1 если fn(a) < fn(b), 1 - если fn(b) < fn(a), иначе 0

Добавлено в версии v0.23.0

Создает восходящую функцию сравнения, которая вернет значение которое может быть сравнимо с помощью < и >.

Смотрите также descend.

var byAge = R.ascend(R.prop('age'));
var people = [
  // ...
];
var peopleByYoungestFirst = R.sort(byAge, people);

Попробуйте в REPL

⬆ вверх

assoc

[Object]

String → a → {k: v} → {k: v}

Параметры:

prop Имя свойства, которое должно быть задано.
val Новое значение
obj Объект который должен быть скопирован.
вернет Object новый объект, эквивалентный исходному, за исключением измененного свойства.

Добавлено в версии v0.8.0

Создает поверхностную копию объекта, устанавливая или переопределяя указанное свойство заданным значением. Обратите внимание, что это создаст новый объект. Все свойства, не являющиеся примитивами, копируются по ссылке. Смотрите также dissoc.

R.assoc('c', 3, {a: 1, b: 2}); //=> {a: 1, b: 2, c: 3}

Попробуйте в REPL

⬆ вверх

assocPath

[Object]

[Idx] → a → {a} → {a} Idx = String | Int

Параметры:

path путь который надо задать.
val Новое значение
obj Объект который должен быть скопирован.
вернет Object Новый объект, эквивалентный оригинальному, за исключением указанного пути.

Добавлено в версии v0.8.0

Создает поверхностную копию объекта, устанавливая или перезаписывая узлы, которые необходимы для создания указанного пути и вставляя указанное значение в конце того пути. Обратите внимание, что он так же копирует и приравнивает значения прототипов к новому объекту. Все значения не являющиеся примитивами копируются по ссылке. Смотрите также dissocPath.

R.assocPath(['a', 'b', 'c'], 42, {a: {b: {c: 0}}}); //=> {a: {b: {c: 42}}}

// Любые отсутствующие или не объектные ключи в path будут переопределены
R.assocPath(['a', 'b', 'c'], 42, {a: 5}); //=> {a: {b: {c: 42}}}

Попробуйте в REPL

⬆ вверх

binary

[Function]

(* → c) → (a, b → c)

Параметры:

fn Функция, которую необходимо обернуть.
вернет function Новая Функция, которая оборачивает функцию fn. Новая Функция гарантированно имеет арность 2.

Добавлено в версии v0.2.0

Оборачивает функцию любой арности (включая нулевую) в функцию, которая принимает в себя 2 аргумента. Ни один из избыточных аргументов не будет передан в обернутую функцию.

Смотрите также nAry, unary.

var takesThreeArgs = function(a, b, c) {
  return [a, b, c];
};
takesThreeArgs.length; //=> 3
takesThreeArgs(1, 2, 3); //=> [1, 2, 3]

var takesTwoArgs = R.binary(takesThreeArgs);
takesTwoArgs.length; //=> 2
// В обернутую функцию передается только 2 аргумента
takesTwoArgs(1, 2, 3); //=> [1, 2, undefined]

Попробуйте в [REPL](http://ramdajs.com/repl/?v=0.24.1#;var takesThreeArgs %3D function(a%2C b%2C c) {%0A return [a%2C b%2C c]%3B%0A}%3B%0AtakesThreeArgs.length%3B %2F%2F%3D> 3%0AtakesThreeArgs(1%2C 2%2C 3)%3B %2F%2F%3D> [1%2C 2%2C 3]%0A%0Avar takesTwoArgs %3D R.binary(takesThreeArgs)%3B%0AtakesTwoArgs.length%3B %2F%2F%3D> 2%0A%2F%2F Only 2 arguments are passed to the wrapped function%0AtakesTwoArgs(1%2C 2%2C 3)%3B %2F%2F%3D> [1%2C 2%2C undefined])

⬆ вверх

bind

[Function]

(* → *) → {*} → (* → *)

Параметры:

fn Функция, которую необходимо привязать к контексту.
thisObj Контекст, к которому привязывается Функция fn
вернет function Функция, которая будет выполнена в контексте thisObj.

Добавлено в версии v0.6.0

Создает функцию привязанную к контесту. Примечание: R.bind не предоставляет дополнительные возможности привязки аргументов Function.prototype.bind.

Смотрите также partial.

var 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}

Попробуйте в REPL

⬆ вверх

both

[Logic]

(*… → Boolean) → (*… → Boolean) → (*… → Boolean)

Параметры:

f Предикат
g Другой предикат
вернет function Функция, вызывает f и g и возвращает && их результатов.

Добавлено в версии v0.12.0

Функция, которая вызывает две передаваемых в нее функции и возвращает && результата. Это вернет результат первой функции, если она false, а иначе вернет вторую функцию. Примечание, вторая Функция не будет вызвана, если первая вернет значение false.

В дополнение к функциям, R.both также принимает любые совместимые с fantasy-land аппликативные функторы.

Смотрите также and.

var gt10 = R.gt(R.__, 10)
var lt20 = R.lt(R.__, 20)
var f = R.both(gt10, lt20);
f(15); //=> true
f(30); //=> false

Попробуйте в REPL

⬆ вверх

call

[Function]

(*… → a),*… → a

Параметры:

fn Функция, которую нужно применить к оставшимся аргументам.
args Любое количество позиционных аргументов.
вернет *

Добавлено в версии v0.9.0

вернет результат вызова первого аргумента и оставшиеся аргументы. Иногда это полезно в качестве конверсионной функции для R.converge: первая ветка может образовать функцию, в то время как остальные ветви образуют значения, которые будут переданы в ту образованную функцию в качестве аргументов. Смотрите также apply.

R.call(R.add, 1, 2); //=> 3

var indentN = R.pipe(R.times(R.always(' ')),
                     R.join(''),
                     R.replace(/^(?!$)/gm));

var 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'

Попробуйте в REPL

⬆ вверх

chain

[List]

Chain m => (a → m b) → m a → m b

Параметры:

fn Функция, с которой надо совместить.
list Список для отображения.
вернет Array Результат плоского отображения списка list с функцией fn.

Добавлено в версии v0.3.0

chain применяет функцию к списку и объединяет результаты. chain также известен в некоторых библиотеках как flatMap.

Выполняется метод chain второго аргумента(если он имеется), согласно FantasyLand Chain спецификации.

Смотрите также apply.

var 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]

Попробуйте в REPL

⬆ вверх

clamp

[Relation]

Ord a => a → a → a → a

Параметры:

minimum Нижний предел диапазона (включительно)
maximum Верхний предел диапазона (включительно)
value Значение для закрепления в диапазоне
вернет Number вернет minimum, когда значение меньше минимума(value < minimum), maximum, когда значение больше максимум(value > maximum), во всех других случаях вернет именно значение(value)

Добавлено в версии v0.20.0

Ограничивает число вне диапазона.

Также работает для других упорядоченных типов, таких как сроки (Strings) и даты (Dates)

R.clamp(1, 10, -5) // => 1
R.clamp(1, 10, 15) // => 10
R.clamp(1, 10, 4)  // => 4

Попробуйте в REPL

⬆ вверх

clone

[Object]

{*} → {*}

Параметры:

value Объект или массив, который нужно клонировать
вернет * Глубокую копию передаваемого объекта / массива (val)

Добавлено в версии v0.1.0

Создает глубокую копию value, которое может содержать (вложенный) массивы (Array), объекты (Object), числа (Number), строки (String), булевые значения (Boolean) и даты (Date). Функции назначаются по ссылке, а не копируются.

Передает в метод clone, если тот присутствует.

var objects = [{}, {}, {}];
var objectsClone = R.clone(objects);
objects === objectsClone; //=> false
objects[0] === objectsClone[0]; //=> false

Попробуйте в REPL

⬆ вверх

comparator

[Function]

((a, b) → Boolean) → ((a, b) → Number)

Параметры:

pred Функция предикат второго уровня, которая возвращает true, если первый аргумент меньше второго, иначе false
вернет Function Функция:: a - > b - > Int, которая возвращает -1 Если a < b, 1 Если b < a, в противном случае 0

Добавлено в версии v0.1.0

Создает функцию сравнения, которая сообщает, является ли первый элемент меньше второго.

var byAge = R.comparator((a, b) => a.age < b.age);
var people = [
  // ...
];
var peopleByIncreasingAge = R.sort(byAge, people);

Попробуйте в REPL

⬆ вверх

complement

[Logic]

(*… → *) → (*… → Boolean)

Параметры:

f
вернет Function

Добавлено в версии v0.12.0

Принимает функцию f и возвращает функцию g такую, что если она вызывается с теми же аргументами что и f, когда f возвращает true, g возвращает false, а когда f возвращает значение false, g возвращает true.

R.complement может быть применено к любому функтору.

Смотрите также not.

var isNotNil = R.complement(R.isNil);
isNil(null); //=> true
isNotNil(null); //=> false
isNil(7); //=> false
isNotNil(7); //=> true

Попробуйте в REPL

⬆ вверх

compose

[Function]

((y → z), (x → y), …, (o → p), ((a, b, …, n) → o)) → ((a, b, …, n) → z)

Параметры:

...functions Функции, которые должны быть скомпозированны.
вернет function Скомпозированную функцию

Добавлено в версии v0.1.0

Выполняет композирование функции справа налево. Крайняя правая Функция может иметь любую арность, а другие функции должны быть унарными.

Зауважте: Результат метода compose не каррируется автоматически.

Смотрите также pipe.

var classyGreeting = (firstName, lastName) => "The name's " + lastName + ", " + firstName + " " + lastName
var 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

Попробуйте в REPL

⬆ вверх

composeK

[Function]

Chain m => ((y → m z), (x → m y), …, (a → m b)) → (a → m z)

Параметры:

...functions Функции, которые должны быть скомпозированны.
вернет function

Добавлено в версии v0.16.0

Возвращает композицию Kleisli справа налево предоставленных функций, каждая из которых должна возвращать значение типа, поддерживаемого Chain.

R.composeK(h, g, f) эквивалент R.compose(R.chain(h), R.chain(g), f).

Смотрите также pipeK.

//  get :: String -> Object -> Maybe *
 var get = R.curry((propName, obj) => Maybe(obj[propName]))

 //  getStateCode :: Maybe String -> Maybe String
 var 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()

Попробуйте в REPL

⬆ вверх

composeP

[Function]

((y → Promise z), (x → Promise y), …, (a → Promise b)) → (a → Promise z)

Параметры:

...functions Функции, которые должны быть скомпозированны.
вернет function

Добавлено в версии v0.10.0

Выполняет композицию справа налево одной или нескольких функций, возвращающих Promise. Крайняя правая функция может иметь любую арность, остальные функции должны быть унарными.

Смотрите также pipeP.

var db = {
  users: {
    JOE: {
      name: 'Joe',
      followers: ['STEVE', 'SUZY']
    }
  }
}

// We'll pretend to do a db lookup which returns a promise
var lookupUser = (userId) => Promise.resolve(db.users[userId])
var lookupFollowers = (user) => Promise.resolve(user.followers)
lookupUser('JOE').then(lookupFollowers)

//  followersForUser :: String -> Promise [UserId]
var followersForUser = R.composeP(lookupFollowers, lookupUser);
followersForUser('JOE').then(followers => console.log('Followers:', followers))
// Followers: ["STEVE","SUZY"]

Попробуйте в REPL

⬆ вверх

concat

[List]

[a] → [a] → [a] String → String → String

Параметры:

firstList Первый список.
secondList Второй список.
вернет Array Список, состоящий из элементов firstList и элементов secondList.

Добавлено в версии v0.1.0

Возвращает результат конкатенации данных списков или строк.

Примечание: R.concat ожидает, что оба аргумента будут одного типа, в отличие от метода Array.prototype.concat. Он выдаст ошибку, если вы конкатенируете массив с примитвом.

Отправляет метод concat первого аргумента, если он присутствует. Может также объединять два члена полугруппы совместимой с fantasy-land.

R.concat('ABC', 'DEF'); // 'ABCDEF'
R.concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3]
R.concat([], []); //=> []

Попробуйте в REPL

⬆ вверх

cond

[Logoc]

[[(*… → Boolean),(*… → *)]] → (*… → *)

Параметры:

pairs Список [предикат, трансформатор]
вернет Function

Добавлено в версии v0.6.0

Возвращает функцию fn, которая инкапсулирует if/else, if/else, ... logic. R.cond принимает список пар [предикат, трансформатор]. Все аргументы fn применяются к каждому из предикатов по очереди, пока не вернется «истинное» значение, после чего fn возвращает результат применения своих аргументов к соответствующему трансформатору. Если ни один из предикатов не совпадает, fn возвращает undefined.

Отправляет метод concat первого аргумента, если он присутствует. Может также объединять два члена полугруппы совместимой с fantasy-land.

var 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'

Попробуйте в REPL

⬆ вверх

construct

[Fnction]

(* → {*}) → (* → {*})

Параметры:

fn Функция конструктор для обертывания.
вернет Function Каррированная функция конструктор.

Добавлено в версии v0.1.0

Оборачивает функцию-конструктор внутри каррированной функции, которая может быть вызвана с теми же аргументами и возвращает один и тот же тип.

Смотрите также invoker.

// Constructor function
function Animal(kind) {
  this.kind = kind;
};
Animal.prototype.sighting = function() {
  return "It's a " + this.kind + "!";
}

var AnimalConstructor = R.construct(Animal)

// Notice we no longer need the 'new' keyword:
AnimalConstructor('Pig'); //=> {"kind": "Pig", "sighting": function (){...}};

var animalTypes = ["Lion", "Tiger", "Bear"];
var animalSighting = R.invoker(0, 'sighting');
var sightNewAnimal = R.compose(animalSighting, AnimalConstructor);
R.map(sightNewAnimal, animalTypes); //=> ["It's a Lion!", "It's a Tiger!", "It's a Bear!"]

Попробуйте в REPL

⬆ вверх

constructN

[Fnction]

Number → (* → {*}) → (* → {*})

Параметры:

n Арность функции-конструктора.
fn Функция конструктор для обертывания.
вернет Function Каррированная функция конструктор.

Добавлено в версии v0.4.0

Оборачивает функцию-конструктор внутри каррированной функции, которая может быть вызвана с теми же аргументами и возвращает один и тот же тип. Арность функции возвращается, чтобы разрешить использование функций с переменным числом аргументов конструктора.

Смотрите также invoker.

// Функция конструктор с переменным числом аргументов
function Salad() {
  this.ingredients = arguments;
}

Salad.prototype.recipe = function() {
  var instructions = R.map(ingredient => 'Add a dollop of ' + ingredient, this.ingredients);
  return R.join('\n', instructions);
};

var ThreeLayerSalad = R.constructN(3, Salad);

// Обратите внимание, что нам больше не нужно ключевое слово "new", и конструктор каррирован для 3 аргументов.
var 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

Попробуйте в REPL

⬆ вверх

contains

[List]

a → [a] → Boolean

Параметры:

a Элемент для сравнения.
list Массив для рассмотрения.
вернет Boolean true, если эквивалентный элемент находится в списке, в противном случае - false.

Добавлено в версии v0.1.0

Возвращает true, если указанное значение равно, с точки зрения R.equals, по меньшей мере одному элементу данного списка, false в противном случае.

Смотрите также any.

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

Попробуйте в REPL

⬆ вверх

converge

[Function]

(x1 → x2 → … → z) → [(a → b → … → x1), (a → b → … → x2), …] → (a → b → … → z)

Параметры:

after Функция after будет вызвона с возвращаемыми значениями fn1 и fn2 в качестве аргументов.
functions Список функций.
вернет function Новая функция.

Добавлено в версии v0.4.2

Принимает функцию преобразователь и список функций и вернет новую функцию. При вызове эта новая Функция применяется к некоторым аргументам, каждая переданная Функция применяется к соответствующим аргументам. Результат каждой примененной функции передается как аргумент функции преобразователя для создания возвращаемого значение.

Смотрите также useWith.

var average = R.converge(R.divide, [R.sum, R.length])
average([1, 2, 3, 4, 5, 6, 7]) //=> 4

var strangeConcat = R.converge(R.concat, [R.toUpper, R.toLower])
strangeConcat("Yodel") //=> "YODELyodel"

Попробуйте в REPL

⬆ вверх

countBy

[Relation]

(a → String) → [a] → {*}

Параметры:

fn Функция, используемая для сопоставления ключ - значение.
list Список для подсчета элементов.
вернет Object Сопоставление ключей объекта с числом, вхождений в список. (An object mapping keys to number, of occurrences in the list.)

Добавлено в версии v0.1.0

Подсчитывает элементы списка в зависимости от того, сколько из них соответствует каждому значению ключа, сгенерированного предоставленной функцией. Возвращает объект, сопоставляющий ключи, созданные fn, с количеством вхождений в списке. Обратите внимание, что все ключи принудительно приведены к строкам из-за того, как работают объекты JavaScript.

Действует как преобразователь, если трансформатор задан в позиции списка.

var numbers = [1.0, 1.1, 1.2, 2.0, 3.0, 2.2];
R.countBy(Math.floor)(numbers);    //=> {'1': 3, '2': 2, '3': 1}

var letters = ['a', 'b', 'A', 'a', 'B', 'c'];
R.countBy(R.toLower)(letters);   //=> {'a': 3, 'b': 2, 'c': 1}

Попробуйте в REPL

⬆ вверх

curry

[Function]

(* → a) → (* → a)

Параметры:

fn Функция, которую ужно закаррировать.
вернет Function Новая каррированная функция

Добавлено в версии v0.1.0

Возвращает эквивалент предоставленной функции. Функция карри имеет две необычные возможности.

Во-первых, его аргументы не обязательно должны предоставляться по одному. Если f - тернарная функция, а g - R.curry(f), то следующие функции эквивалентны:

  • g(1)(2)(3)
  • g(1)(2, 3)
  • g(1, 2)(3)
  • g(1, 2, 3)

Во-вторых, специальное значение placeholder 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)

Смотрите также curryN.

var addFourNumbers = (a, b, c, d) => a + b + c + d;

var curriedAddFourNumbers = R.curry(addFourNumbers);
var f = curriedAddFourNumbers(1, 2);
var g = f(3);
g(4); //=> 10

Попробуйте в REPL

⬆ вверх

curryN

[Function]

Number → (* → a) → (* → a)

Параметры:

length Арность возвращаемой функции
fn Функция, которую ужно закаррировать.
вернет Function Новая каррированная функция

Добавлено в версии v0.5.0

Возвращает эквивалент предоставленной функции, с заданной арностью. Функция карри имеет две необычные возможности.

Во-первых, его аргументы не обязательно должны предоставляться по одному. Если g является R.curryN(3, f), то следующие эквиваленты:

  • g(1)(2)(3)
  • g(1)(2, 3)
  • g(1, 2)(3)
  • g(1, 2, 3)

Во-вторых, специальное значение placeholder 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.

var sumArgs = (...args) => R.sum(args);

var curriedAddFourNumbers = R.curryN(4, sumArgs);
var f = curriedAddFourNumbers(1, 2);
var g = f(3);
g(4); //=> 10

Попробуйте в REPL

⬆ вверх

dec

[Math]

Number → Number

Параметры:

n
вернет Number n - 1

Добавлено в версии v0.9.0

Уменьшит свой аргумент.

Смотрите также inc.

R.dec(42); //=> 41

Попробуйте в REPL

⬆ вверх

defaultTo

[Logic]

a → b → a | b

Параметры:

default Значение по умолчанию
val val будет возвращен вместо значения по умолчанию, пока val не является null, undefined или NaN
вернет * Второе значение, если оно не является null, undefined или NaN, иначе вернет значение по умолчанию

Добавлено в версии v0.10.0

вернет второй аргумент если он не null, undefined или NaN, иначе вернет default.

var defaultTo42 = R.defaultTo(42);

defaultTo42(null);  //=> 42
defaultTo42(undefined);  //=> 42
defaultTo42('Ramda');  //=> 'Ramda'
// parseInt('string') results in NaN
defaultTo42(parseInt('string')); //=> 42

Попробуйте в REPL

⬆ вверх

descend

[Function]

Ord b => (a → b) → a → a → Number

Параметры:

fn Унарная функция, возвращающая значение, которое можно сравнить
a Первый элемент для сравнения.
b Второй элемент для сравнения.
вернет Number -1 в случае, если fn(a) > fn(b), или 1, если fn(b) > fn(a), иначе вернет 0

Добавлено в версии v0.23.0

Создает нисходящий компаратор из функции, которая возвращает значение, которое можно сравнить с < и >.

Смотрите также ascend.

var byAge = R.descend(R.prop('age'));
var people = [
  // ...
];
var peopleByOldestFirst = R.sort(byAge, people);

Попробуйте в REPL

⬆ вверх

difference

[Relation]

[*] → [*] → [*]

Параметры:

list1 Первый список.
list2 Второй список.
вернет Array вернет массив элементов из списка list1, которых нет в списке list2.

Добавлено в версии v0.1.0

Находит набор (неповторяющихся) элементов из первого списка, которых нет во втором списке. Объекты и массивы сравниваются с точки зрения равенства значений, а не равенства ссылок.

Смотрите также 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}]

Попробуйте в REPL

⬆ вверх

differenceWith

[Relation]

((a, a) → Boolean) → [a] → [a] → [a]

Параметры:

pred Предикат, который используется для выяснения равны ли елементы между собой.
list1 Первый список.
list2 Второй список.
вернет Array вернет массив элементов из списка list1, которых нет в списке list2.

Добавлено в версии v0.1.0

Находит набор (неповторяющихся) элементов первого списка, которых нет во втором списке. Повторяемость элементов оказывается согласно значению, которое вернетться после применения предоставленного предиката по обоим спискам.

Смотрите также difference, symmetricDifference, symmetricDifferenceWith.

var cmp = (x, y) => x.a === y.a;
var l1 = [{a: 1}, {a: 2}, {a: 3}];
var l2 = [{a: 3}, {a: 4}];
R.differenceWith(cmp, l1, l2); //=> [{a: 1}, {a: 2}]

Попробуйте в REPL

⬆ вверх

dissoc

[Object]

String → {k: v} → {k: v}

Параметры:

prop Имя свойства, которое нужно диссоциировать (отделить)
obj Объект, который нужно клонировать
вернет Object Новый объект, эквивалентный obj, но без указанного свойства prop.

Добавлено в версии v0.10.0

вернет объект, не содержащий указанного свойства prop.

Смотрите также assoc.

R.dissoc('b', {a: 1, b: 2, c: 3}); //=> {a: 1, c: 3}

Попробуйте в REPL

⬆ вверх

dissocPath

[Object]

[Idx] → {k: v} → {k: v} Idx = String | Int

Параметры:

path Путь до значения, которое надо пропустить
obj Объект, который нужно копировать
вернет Object Новый объект без свойства, которое находится по указанному пути.

Добавлено в версии v0.11.0

Создает поверхностную копию объекта, пропуская свойство по указанному пути. Примечание: это также копирует и приравнивает свойства прототипа к новому объекту. Все непримитивы копируются по ссылке.

Смотрите также assocPath.

R.dissocPath(['a', 'b', 'c'], {a: {b: {c: 42}}}); //=> {a: {b: {}}}

Попробуйте в REPL

⬆ вверх*

divide

[Math]

Number → Number → Number

Параметры:

a Первое значение.
b Первое значение.
вернет Number Результат a / b.

Добавлено в версии v0.1.0

Делит два числа, эквивалент a / b.

Смотрите также multiply.

R.divide(71, 100); //=> 0.71

var half = R.divide(R.__, 2);
half(42); //=> 21

var reciprocal = R.divide(1);
reciprocal(4);   //=> 0.25

Попробуйте в REPL

⬆ вверх

drop

[List]

Number → [a] → [a] Number → String → String

Параметры:

n
list
вернет * Копию списка без первых n 'ktvtynjd.

Добавлено в версии v0.1.0

вернет все, кроме первых 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'

Попробуйте в REPL

⬆ вверх

dropLast

[List]

Number → [a] → [a] Number → String → String

Параметры:

n Количество элементов списка, которое нужно пропустить.
list Список элементов.
вернет Array Копия списка только c первыми list.length - n элементами.

Добавлено в версии v0.16.0

вернет список, который содержит все кроме последних 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'

Попробуйте в REPL

⬆ вверх

dropLastWhile

[List]

(a → Boolean) → [a] → [a] (a → Boolean) → String → String

Параметры:

predicate Функция, которая должна быть вызвана для каждого элемента.
xs Коллекция, которую надо итерировать.
вернет Array Новый массив без элементов, которые начиная с конца возвращают falsy значение из функции-предиката(predicate).

Добавлено в версии v0.16.0

Вернет новый список, без последних элементов переданного списка, которые удовлетворяют условию переданной функции-предиката. Она передает каждое значение справа к переданному предикату, отсеивая элементы пока Функция-предикат возвращает false. Функция-предикат применяется к одному аргементу: (value).

Смотрите также takeLastWhile, addIndex, drop, dropWhile.

var 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'

Попробуйте в REPL

⬆ вверх

dropRepeats

[List]

[a] → [a]

Параметры:

list Рассматриваемый массив.
вернет Array list без повторяющихся элементов.

Добавлено в версии v0.14.0

вернет новый список без последовательно повторяющихся элементов. Для определения равенства используется R.equals.

Ведет себя как трансдюсер, если передан трансформер вместо списка.

Смотрите также transduce.

R.dropRepeats([1, 1, 1, 2, 3, 4, 4, 2, 2]); //=> [1, 2, 3, 4, 2]

Попробуйте в REPL

⬆ вверх

dropRepeatsWith

[List]

((a, a) → Boolean) → [a] → [a]

Параметры:

pred Предикат, с помощью которого проверяется, есть ли два элемента равные между собой
list Рассматриваемый массив.
вернет Array list без повторяющихся элементов.

_Добавлено в версии v0.14.0

вернет новый список без последовательно повторяющихся элементов. Равенство определяется применением переданного предиката к каждой паре последовательных элементов. Первый элемент в серии равных элементов будет сохранен.

Ведет себя как трансдюсер, в случае, если вместо списка передан трансформер.

Смотрите также transduce.

var l = [1, -1, 1, 3, 4, -4, -4, -5, 5, 3, 3];
R.dropRepeatsWith(R.eqBy(Math.abs), l); //=> [1, 3, 4, -5, 3]

Попробуйте в REPL

⬆ вверх

dropWhile

[List]

(a → Boolean) → [a] → [a] (a → Boolean) → String → String

Параметры:

fn Фунция, которая будет вызываться на каждой итерации.
xs Итерируемая коллекция.
вернет Array Новый массивю

Добавлено в версии v0.9.0

Вернет новый список, исключая начальные элементы переданного списка, которые удовлетворяют условию переданного предиката. Эта Функция передает каждое значение из списка в предоставленный предикат, пропуская элементы, пока предикат возвращает true. Предикат применяется к одному элементу: (value).

Передает в dropWhile метод второго аргумента, если тот присутствует.

Ведет себя как трансдюсер, если вместо списка передан трансформер.

Смотрите также takeWhile, transduce, addIndex.

var 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'

Попробуйте в REPL

⬆ вверх

either

[Logic]

(*… → Boolean) → (*… → Boolean) → (*… → Boolean)

Параметры:

f предикат
d второй предикат
вернет Function Функция которая применит логическое или к передаваемым аргументам

Добавлено в версии v0.24.0

Фунция обертка, вызывает функции и применяет к ним логическое или, возвращая результат первой если это истинна true или результат второй в противном случае. Примечание: вторая функция не будет вызвана если первая вернет true.

Помимо функций, R.either также принимает апликативные функторы совместимые с fantasy-land.

Смотрите также or

var gt10 = x => x > 10;
var even = x => x % 2 === 0;
var f = R.either(gt10, even);
f(101); //=> true
f(8); //=> true

Попробуйте в REPL

⬆ вверх

empty

[Function]

a → a

Параметры:

x
вернет *

Добавлено в версии v0.3.0

Вернет пустое значение типа аргумента. Ramda определяет пустое значение Array ([]), Object ({}), String ("") и 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});  //=> {}

Попробуйте в REPL

⬆ вверх

endsWith

[List]

[a] → Boolean String → Boolean

Параметры:

suffix
list
вернет Boolean

Добавлено в версии v0.24.0

Проверит заканчивается ли список list, предоставленными значениями.

R.endsWith('c', 'abc')                //=> true
R.endsWith('b', 'abc')                //=> false
R.endsWith(['c'], ['a', 'b', 'c'])    //=> true
R.endsWith(['b'], ['a', 'b', 'c'])    //=> false

Попробуйте в REPL

⬆ вверх

eqBy

[Relation]

(a → b) → a → a → Boolean

Параметры:

f
x
y
вернет Boolean

Добавлено в версии v0.18.0

Принимает функцию и два значения и возвращает true, если фукция вернет одно и то же для каждого значения в противном случае false.

R.eqBy(Math.abs, 5, -5); //=> true

Попробуйте в REPL

⬆ вверх

eqProps

[Object]

k → {k: v} → {k: v} → Boolean

Параметры:

props Имя свойства для сравнения
obj1
obj2
вернет Boolean

Добавлено в версии v0.1.0

Проверяет, имеют объекты одинаковое значение, по логике R.equals для указанного свойства. Полезен как каррированный предикат.

var o1 = { a: 1, b: 2, c: 3, d: 4 };
var o2 = { a: 10, b: 20, c: 3, d: 40 };
R.eqProps('a', o1, o2); //=> false
R.eqProps('c', o1, o2); //=> true

Попробуйте в REPL

⬆ вверх

equals

[Relation]

a → b → Boolean

Параметры:

a
b
вернет Boolean

Добавлено в версии v0.15.0

Вернет true, если аргументы эквивалентны, иначе false. Обрабатывает циклические структуры данных.

Применяется к одинаковым методам обоих аргументов, если они есть.

R.equals(1, 1); //=> true
R.equals(1, '1'); //=> false
R.equals([1, 2, 3], [1, 2, 3]); //=> true

var a = {}; a.v = a;
var b = {}; b.v = b;
R.equals(a, b); //=> true

Попробуйте в REPL

⬆ вверх

evolve

[Object]

{k: (v → v)} → {k: v} → {k: v}

Параметры:

transformations
object
вернет Object

Добавлено в версии v0.9.0

Объект, определяющий функции преобразования, применяемые к объекту.

Функция не будет вызывана, если соответствующий ей ключ не существует в изменяемом объекте.

var tomato  = {firstName: '  Tomato ', data: {elapsed: 100, remaining: 1400}, id:123};
var transformations = {
  firstName: R.trim,
  lastName: R.trim, // Не будет вызвано.
  data: {elapsed: R.add(1), remaining: R.add(-1)}
};
R.evolve(transformations, tomato); //=> {firstName: 'Tomato', data: {elapsed: 101, remaining: 1399}, id:123}

Попробуйте в REPL

⬆ вверх

F

[Function]

* → Boolean

Параметры:

вернет Boolean

Добавлено в версии v0.9.0

Функция, которая всегда возвращает false. Любые переданные параметры игнорируются.

Смотрите также always, T.

R.F(); //=> false

Попробуйте в REPL

⬆ вверх

filter

[List]

Filterable f => (a → Boolean) → f a → f a

Параметры:

pred
filterable
вернет Array отфильтрованный

Добавлено в версии v0.1.0

Фильтрует коллекцию и возвращает новую, того же типа, содержащую елементы удовлетворяющие условию заданного предиката. Это может быть объект или любой элемент, имеющий метод filter, например Array.

Отправляет в метод filter второй аргумент, если он есть.

Действует как transducer, если transformer задан в позиции списка.

Смотрите также reject, transduce, addIndex.

var 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}

R.filter(isEven, '689'); //=> ["6", "8"]

Попробуйте в REPL

⬆ вверх

find

[List]

(a → Boolean) → [a] → a | undefined

Параметры:

fn Функция предикат, используемая для определения подходящего элемента.
list Массив для рассмотрения
вернет Object Элемент найден, или undefined.

Добавлено в версии v0.1.0

Возвращает первый элемент списка, который соответствует предикату, или undefined, если элемент не найден.

Отправляет в метод find второй аргумент, если он присутствует.

Действует как transducer, если transformer задан в позиции списка.

Смотрите также transduce.

var xs = [{a: 1}, {a: 2}, {a: 3}];
R.find(R.propEq('a', 2))(xs); //=> {a: 2}
R.find(R.propEq('a', 4))(xs); //=> undefined

Попробуйте в REPL

⬆ вверх

findIndex

[List]

(a → Boolean) → [a] → Number

Параметры:

fn Функция предикат, используемая для определения подходящего элемента.
list Массив для рассмотрения
вернет Number Вернет индекс элемента, если он найден, иначе -1.

Добавлено в версии v0.1.1

Возвращает первый элемент списка, который соответствует предикату, или -1, если элемент не найден.

Действует как transducer, если transformer задан в позиции списка.

Смотрите также transduce.

var xs = [{a: 1}, {a: 2}, {a: 3}];
R.findIndex(R.propEq('a', 2))(xs); //=> 1
R.findIndex(R.propEq('a', 4))(xs); //=> -1

Попробуйте в REPL

⬆ вверх

findLast

[List]

(a → Boolean) → [a] → a | undefined

Параметры:

fn Функция предикат, используемая для определения подходящего элемента.
list Массив для рассмотрения
вернет Object Вернет Object, если он найден, иначе undefined.

Добавлено в версии v0.1.1

Возвращает последний элемент списка, в котором найдет соответствие предикату, или undefined, если соответствий не найдено.

Действует как transducer, если transformer задан в позиции списка.

Смотрите также transduce.

var 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

Попробуйте в REPL

findLastIndex

[List]

(a → Boolean) → [a] → Number

Параметры:

fn Функция предикат, используемая для определения подходящего элемента.
list Массив для рассмотрения
вернет Number Вернет индекс элемента, если он найден, иначе -1.

Добавлено в версии v0.1.1

Возвращает индекс последнего, соответсвующего предикату элемента, или -1, если соответствий не найдено.

Действует как transducer, если transformer задан в позиции списка.

Смотрите также transduce.

var 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

Попробуйте в REPL

⬆ вверх

flatten

[List]

[a] → [b]

Параметры:

list Массив для рассмотрения
вернет Array Вернет одномерный массив.

Добавлено в версии v0.1.0

Вернет новый одномерный массив, со всеми элементами старого (включая элементы вложенных в него массивов).

Смотрите также 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]

Попробуйте в REPL

⬆ вверх

flip

[Function]

((a, b, c, …) → z) → (b → a → c → … → z)

Параметры:

fn Функция вызываемая с измененным порядком первых двух аргументов
вернет * Вернет результат вычислений fh.

Добавлено в версии v0.1.0

Вернет такую же функцию с измененным порядком первых двух аргументов.

var mergeThree = (a, b, c) => [].concat(a, b, c);

mergeThree(1, 2, 3); //=> [1, 2, 3]

R.flip(mergeThree)(1, 2, 3); //=> [2, 1, 3]

Попробуйте в REPL

⬆ вверх

forEach

[List]

(a → *) → [a] → [a]

Параметры:

fn Вызываемая функция, с одним аргументом value
list Итерируемый массив
вернет Array Вернет оригинальный массив.

Добавлено в версии v0.1.1

Итерируется по входящему массиву list, применяя функцию fn для каждого элемента.

fn принимает один аргумент: (value)

Примечание: R.forEach не пропускает удаленные или неназначенные индексы (разреженные массивы), в отличие от Array.prototype.forEach. Больше о поведении встроеного метода можно почитать тут: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach#Description

Так же в отличии от Array.prototype.forEach, R.forEach возвращает оригинальный массив. В некоторых библиотеках этот метод называется each.

Отправляет в метод forEach второй аргумент, если он присутствует.

Смотрите также addIndex.

var printXPlusFive = x => console.log(x + 5);
R.forEach(printXPlusFive, [1, 2, 3]); //=> [1, 2, 3]
// logs 6
// logs 7
// logs 8

Попробуйте в REPL

⬆ вверх

forEachObjIndexed

[Object]

((a, String, StrMap a) → Any) → StrMap a → StrMap a

Параметры:

fn Вызываемая функция, принимающая три аргумента value, key, object
obj Итерируемый объект
вернет Object Вернет оригинальный объект.

Добавлено в версии v0.23.0

Итерируется по входящему объекту obj, применяя функцию fn для каждого key и value в object.

fn принимает три аргумента: (key, value, object)

Смотрите также addIndex.

var printKeyConcatValue = (value, key) => console.log(key + ':' + value);
R.forEachObjIndexed(printKeyConcatValue, {x: 1, y: 2}); //=> {x: 1, y: 2}
// logs x:1
// logs y:2

Попробуйте в REPL

⬆ вверх

fromPairs

[List]

[[k,v]] → {k: v}

Параметры:

pairs Массив массивов из двух элементов которые будут key и value результирующего объекта
вернет Object Вернет объект с key и value равными значениям парных массивов.

Добавлено в версии v0.3.0

Создаст новый объект из элементов массива pairs. Если в нескольких парах одинаковый key то в объект будет добалена последняя.

Смотрите также toPairs, pair.

R.fromPairs([['a', 1], ['b', 2], ['c', 3]]); //=> {a: 1, b: 2, c: 3}

Попробуйте в REPL

⬆ вверх

groupBy

[List]

(a → String) → [a] → {String: [a]}

Параметры:

fn Функция :: a -> String
list Массив
вернет Object Объект c ключами, сопоставленный с массивом элементов, которые произвели этот ключ при передаче в fn.

Добавлено в версии v0.1.0

Разделяет список на вложенные списки, хранящиеся в объекте, на основе результата вызова функции возвращающей строку для каждого элемента и группы результатов в соответствии с возвращаемыми значениями.

Отправляет методу groupBy второй аргумента, если он есть.

Действует как transducer, если transformer задан в позиции списка.

Смотрите также 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}]
// }

Попробуйте в REPL

⬆ вверх

groupWith

[List]

((a, a) → Boolean) → [a] → [[a]]

Параметры:

fn Функция для определения того, должны ли два заданных (смежных) элемента быть в одной группе
list Массив для группировки. Также принимает строку, которая будет рассматриваться как список символов.
вернет List Список, содержащий подсписки элементов, конкатенация которых равна исходному списку.

Добавлено в версии v0.21.0

Принимает список и возвращает список списков, в которых все элементы подсписка удовлетворяются по взаимному сравнению в соответствии с предоставленной функцией. Только соседние элементы передаются в функцию сравнения.

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']

Попробуйте в REPL

⬆ вверх

gt

[Relation]

Ord a => a → a → Boolean

Параметры:

a
list
вернет Boolean

Добавлено в версии v0.1.0

Возвращает true, если первый аргумент больше второго, иначе false.

Смотрите также it.

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

Попробуйте в REPL

⬆ вверх

gte

[Relation]

Ord a => a → a → Boolean

Параметры:

a
list
вернет Boolean

Добавлено в версии v0.1.0

Возвращает true, если первый аргумент больше или равен второму, иначе false.

Смотрите также ite.

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

Попробуйте в REPL

⬆ вверх

identity

[Function]

a → a

Параметры:

x Возвращаемое значение
вернет * Введенное значение x

Добавлено в версии v0.1.0

Функция, которая ничего не делает, но вернет переданный в нее аргумент. Хорошо подходит, чтобы быть функцией по умолчанию или функцией-заполнителем.

R.identity(1); //=> 1

var obj = {};
R.identity(obj) obj; //=> true

Попробуйте в REPL

⬆ вверх

into

[List]

a → (b → b) → [c] → a

Параметры:

acc Аккумулятор. Начальное значеие.
xf Функция-преобразователь. Получает и возвращает трансформер.
list Список.
вернет * Окончательное накопленное значение

Добавлено в версии v0.12.0

Изменяет элементы списка с помощью преобразователя и добавляет преобразованные элементы в аккумулятор, используя соответствующую функцию итератор, основанную на типе аккумулятора.

Аккумулятор может быть массивом, строкой, объектом или трансформатором. Итерированные элементы будут добавлены в массивы и объединены со строками. Объекты будут смержены, массивы из 2 элементов будут смержены как пары ключ - значение.

Аккумулятор может также быть объектом-трансформером, который обеспечит бинарность (2-арность) сокращение функции-итератора, шаг (step), нулярнисть (0-арность) начального значения функций, Инит (init) и унарнисть (1 - арность) результата извлечениыя функции result. Функция step используется в качестве итератора в reduce. Функция result используется для преобразования аккумулятора в возвращаемый тип и в большинстве случаев является R.identity. Функция init используется для составления начального аккумулятора.

Итерации выполняются с помощью R.reduce после инициализации преобразователя (transducer).

var numbers = [1, 2, 3, 4];
var transducer = R.compose(R.map(R.add(1)), R.take(2));

R.into([], transducer, numbers); //=> [2, 3]

var intoArray = R.into([]);
intoArray(transducer, numbers); //=> [2, 3]

Попробуйте в REPL

⬆ вверх

map

[List]

Functor f => (a → b) → f a → f b

Параметры:

fn Фунция, которая должна быть вызвана по отношению к каждому элементу из списка (list).
list Итерируемый список.
вернет Array Новый список.

Добавлено в версии v0.1.0

Принимает функцию и функтор, применяет функцию к каждому значению в функторе и вернет функтор такой же формы.

Ramda предоставляет удобную реализацию map для Array и Object, поэтому эта Функция может быть применена как к [1, 2, 3] , так и к {x 1, y 2, z 3 }.

Отправляет в метод map второй аргумент, если он есть.

Ведет себя как трансдьюсер (transducer), если transformer передан вместо списка.

Также воспринимает функции как функторы и сделает из них композицию.

Смотрите также transduce, addIndex.

var 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}

Попробуйте в REPL

⬆ вверх