Spec-Zone.ru › Ramda

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 в противном случае.

См. также both, xor.

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 должна быть связанной функцией, если контекст важен.

См. также call, unapply.

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, рекурсивно сопоставляющего свойства с функциями, создаёт функцию, которая генерирует объект той же структуры, сопоставляя каждое свойство с результатом вызова соответствующей функции с предоставленными аргументами.

См. также converge, juxt.

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

    Объект для клонирования

Возвращает

  • Объект Новый объект, эквивалентный исходному, за исключением изменённого свойства.

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

См. также dissoc, pick.

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 параметра. Любые дополнительные параметры не будут переданы предоставленной функции.

См. также nAry, unary.

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

Устарело с v0.26.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

Устарело с v0.26.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 не автоматически замыкается. Трансформирующая функция не используется для последнего аргумента.

См. также compose, pipeWith.

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

Устарело с v0.26.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)

См. также curryN, partial.

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

    Значение по умолчанию.

  • val

    val будет возвращено вместо 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.

См. также assoc, omit.

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 Объект, созданный путём сопоставления `ключа` и `значения`.

Создаёт новый объект из списка пар ключ-значение. Если ключ встречается в нескольких парах, в объекте будет включена правая пара.

См. также toPairs, pair.

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.

См. также tail, init, last.

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.

См. также unless, when, cond.

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 → String

Parameters

  • list

Returns

  • *

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

См. также last, head, tail.

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.

См. также keysIn, values.

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

keysIn Добавлен в v0.2.0

{k: v} → [k]

Параметры

  • obj

    Объект для извлечения свойств

Возвращает

  • Array Массив собственных и свойств прототипа объекта.

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

См. также keys, valuesIn.

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

Возвращает

  • *

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

См. также init, head, tail.

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 | Int
Lens s a = Functor f => (a → f a) → s → f s

Параметры

  • path

    Путь для использования.

Возвращает

  • Lens

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

См. также view, set, over.

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

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

См. также view, set, over.

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.

См. также lift, ap.

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

См. также addIndex, mapAccum.

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

Возвращает

  • *

Возвращает большее из двух аргументов.

См. также maxBy, min.

R.max(789, 123); //=> 789
R.max('a', 'b'); //=> 'b'

maxBy Добавлен в v0.8.0

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

Параметры

  • f
  • a
  • b

Возвращает

  • *

Принимает функцию и два значения и возвращает то значение, которое даёт большее значение при передаче в предоставленную функцию.

См. также max, minBy.

//  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

Устарело с v0.26.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

Возвращает

  • *

Возвращает меньшее из двух аргументов.

См. также minBy, max.

R.min(789, 123); //=> 123
R.min('a', 'b'); //=> 'a'

minBy Добавлен в v0.8.0

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

Параметры

  • f
  • a
  • b

Возвращает

  • *

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

См. также min, maxBy.

//  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 параметров. Любые дополнительные параметры не будут переданы в предоставленную функцию.

См. также binary, unary.

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 второго аргумента, если он присутствует.

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

См. также all, any.

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 выбрано из-за сходства с математическим оператором композиции ∘.

См. также compose, pipe.

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.

См. также either, xor.

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

См. также objOf, of.

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.

См. также filter, reject.

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`.

Извлечение значения по заданному пути.

См. также prop, nth.

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`.

Возвращает частичную копию объекта, содержащую только указанные ключи. Если ключ не существует, свойство игнорируется.

См. также omit, props.

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`.

Возвращает частичную копию объекта, содержащую только ключи, удовлетворяющие предоставленному предикату.

См. также pick, filter.

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

Устарело с версии v0.26.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

Устарело с версии v0.26.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`.

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

См. также path, nth.

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.

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

См. также groupBy, reduce.

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

См. также 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

См. также reduce, addIndex.

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, он "прерывает" итерацию и возвращает текущее значение накопителя.

См. также reduce, reduced.

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, но возвращает список последовательно сокращённых значений слева.

См. также reduce, mapAccum.

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 первого аргумента, если он присутствует.

См. также head, init, last.

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 параметр. Любые дополнительные параметры не будут переданы предоставленной функции.

См. также binary, nAry.

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 с тем же аргументом. Если предикат удовлетворён, аргумент возвращается как есть.

См. также ifElse, when, cond.

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.

См. также flatten, 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.

См. также valuesIn, keys.

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

valuesIn Добавлен в v0.2.0

{k: v} → [v]

Параметры

  • obj

    Объект для извлечения значений.

Возвращает

  • Массив Массив значений собственных и свойств прототипа объекта.

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

См. также values, keysIn.

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.

См. также propEq, 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.

См. также or, and.

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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API