Skip to content

Latest commit

 

History

History
2180 lines (1417 loc) · 108 KB

DOCUMENTATION.md

File metadata and controls

2180 lines (1417 loc) · 108 KB

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

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

A

⬆ вверх

B

⬆ вверх

C

⬆ вверх

D

⬆ вверх

J

⬆ вверх

I

⬆ вверх

M

⬆ вверх

N

⬆ вверх

O

⬆ вверх

P

⬆ вверх

R

⬆ вверх

S

⬆ вверх

T

⬆ вверх

U

⬆ вверх

X

⬆ вверх

Z

⬆ вверх


__

[Function]

Додано у версії v0.6.0

Спеціальне значення, для визначення "прогалин" у каррованих функціях, яке дає змогу частковому застосуванню будь-якої комбінації аргументів, в незалежності від їх позицій.

Якщо g - це каррована тернарна функція і _ є R.__, тоді наступне еквівалентне:

  • g(1, 2, 3)
  • g(_, 2, 3)(1)
  • g(_, _, 3)(1)(2)
  • g(_, _, 3)(1, 2)
  • g(_, 2, _)(1, 3)
  • g(_, 2)(1)(3)
  • g(_, 2)(1, 3)
  • g(_, 2)(_, 3)(1)
var greet = R.replace('{name}', R.__, 'Hello, {name}!');
greet('Alice'); //=> 'Hello, Alice!'

Спробуйте у REPL

add

[Math]

Number → Number → Number

Параметри:

a
b
повертає Number

Додано у версії v0.1.0

Додає два значення

Дивіться також subtract.

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

Спробуйте у REPL

⬆ вверх

addIndex

[Function]

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

Параметри:

fn Функція ітерації списку, що не передає індекс чи список у функцію зворотнього виклику(callback)
повертає function Змінена функція ітерації списку, що не передає (елемент, індекс, список) у його функцію зворотнього виклику(callback)

Додано у версії v0.15.0

Створює нову функцію ітерації списку з уже існуючої, за допомогою додавання двох нових аргументів до функції зворотнього виклику: теперішній індекс і весь список.

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

var mapIndexed = R.addIndex(R.map);
mapIndexed((val, idx) => idx + '-' + val, ['f', 'o', 'o', 'b', 'a', 'r']);
//=> ['0-f', '1-o', '2-o', '3-b', '4-a', '5-r']

Спробуйте у REPL

⬆ вверх

adjust

[List]

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

Параметри:

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

Додано у версії v0.14.0

Застосовує функцію до вказаного за індексом елемента у масиві, повертаючи нову копію масиву з елементом, на вказаному за індексом місці, заміненим результатом застосованої функції.

Дивіться також update.

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

Спробуйте у REPL

⬆ вверх

all

[List]

(a → Boolean) → [a] → Boolean

Параметри:

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

Додано у версії v0.1.0

Повертає true, якщо всі елементи списку відповідають предикату, false, якщо у списку немає жодного який би відповідав.

Застосовує до всіх метод другого аргументу, якщо він присутній.

Діє як перетворювач(трансдюсер), якщо трансформер зазначений на місці списку.

Дивіться також any, none, transduce.

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

Спробуйте у REPL

⬆ вверх

allPass

[Logic]

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

Параметри:

predicates масив предикатів, які необхідно перевірити
повертає function об'єднаний предикат

Додано у версії v0.9.0

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

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

Дивіться також anyPass

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

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

Спробуйте у REPL

⬆ вверх

always

[Function]

a → (* → a)

Параметри:

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

Додано у версії v0.1.0

Повертає функцію, яка завжди повертає передане значення. Зауважте, що для не примітивів повертаєме значення буде посиланням а оригінальне значення.

Ця функція відома як const, константа, чи K (для K комбінатор) у інших мовах та бібліотеках.

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

Спробуйте у REPL

⬆ вверх

and

[Logic]

a → b → a | b

Параметри:

a
b
повертає Any перший аргумент, якщо він falsy, інакше - другий аргумент.

Додано у версії v0.1.0

Повертає true, якщо обидва аргументи правидиві(true), інакше повертає - false.

Дивіться також both.

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

Спробуйте у REPL

⬆ вверх

any

[List]

(a → Boolean) → [a] → Boolean

Параметри:

fn Функція предикат
list Масив, який має бути оцінений.
повертає Boolean true, якщо предикат вдовольняє хоча б один з елементів, в іншому випадку повернеться false.

Додано у версії v0.1.0

Повертає true, якщо бодай один елемент списку відповідає предикату, в іншому випадку поверне false.

Застосовує до будь-якого методу другого аргументу, якщо він присутній.

Діє як перетворювач(трансдюсер), якщо трансформер зазначений на місці списку.

Дивіться також all, none, transduce.

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

Спробуйте у REPL

⬆ вверх

anyPass

[Logic]

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

Параметри:

predicates масив предикатів, які необхідно перевірити
повертає function об'єднаний предикат

Додано у версії v0.9.0

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

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

Дивіться також allPass

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

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

Спробуйте у REPL

⬆ вверх

ap

[Function]

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

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

Параметри:

applyF
applyX
повертає *

Додано у версії v0.3.0

ap застосовує список функцій до списку значень.

Передає метод ap другого аргумента, якщо той присутній. Також сприймає карровані функції як аплікативи.

R.ap([R.multiply(2), R.add(3)], [1,2,3]); //=> [2, 4, 6, 4, 5, 6]
R.ap([R.concat('tasty '), R.toUpper], ['pizza', 'salad']); //=> ["tasty pizza", "tasty salad", "PIZZA", "SALAD"]

Спробуйте у REPL

⬆ вверх

aperture

[List]

Number → [a] → [[a]]

Параметри:

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

Додано у версії v0.12.0

Повертає новий список, складений з масивів, кожен з довжиною n послідовних елементів. Якщо n більше ніж довжина списку - повертається порожній список.

Діє як перетворювач(transducer), якщо трансформер(transformer) передано на місці списку.

Дивіться також transduce.

R.aperture(2, [1, 2, 3, 4, 5]); //=> [[1, 2], [2, 3], [3, 4], [4, 5]]
R.aperture(3, [1, 2, 3, 4, 5]); //=> [[1, 2, 3], [2, 3, 4], [3, 4, 5]]
R.aperture(7, [1, 2, 3, 4, 5]); //=> []

Спробуйте у REPL

⬆ вверх

append

[List]

a → [a] → [a]

Параметри:

el Елемент, який треба додати до кінця списку.
list Список елементів до якого слід додати елемент.
повертає Array Новий список включаючий в себе елементи старого списку та вкінці доданий елемент el.

Додано у версії v0.1.0

Повертає новий список, в якому знаходяться елементи переданого в якості параметру списку, та вкінці елемент переданий в якості аргументу.

Дивіться також prepend.

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

Спробуйте у REPL

⬆ вверх

apply

[Function]

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

Параметри:

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

Додано у версії v0.7.0

Застосовує функцію fn до списку аргументів args. Це корисно для створення функції з фіксованою арністю із варіаційної функції. fn повинна бути прив'язаною функцією, у разі якщо контекст важливий.

Дивіться також call, unapply.

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

Спробуйте у REPL

⬆ вверх

applySpec

[Function]

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

Параметри:

spec Об'єкт, який рекурсивно відображає властивості функцій для отримання значень для цих властивостей.
повертає function Функція, котра повертає об'єкт з такою ж структурою як і об'єкт spec, з кожною властивістю встановленою до значення, яке було повернуте викликом пов'язаної функції з переданими аргументами.

Додано у версії v0.20.0

Враховуючи, що об'єкт spec рекурсивно відображає властивості для функції, створюється функція, яка створює об'єкт з такою самою структурою, шляхом співставлення кожної властивості з результатом виклику його пов'язаної функції з переданими аргументами.

Дивіться також converge, juxt.

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

Спробуйте у REPL

⬆ вверх

ascend

[Function]

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

Параметри:

fn Функція арністю один, котра повертає значення, яке може бути порівняним.
a Перший елемент для порівняння.
b Другий елемент для порівняння.
повертає Number -1 якщо fn(a) < fn(b), 1 - якщо fn(b) < fn(a), інакше поверне 0

Додано у версії v0.23.0

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

Дивіться також descend.

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

Спробуйте у REPL

⬆ вверх

assoc

[Object]

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

Параметри:

prop Ім'я влативості яке має бути задане.
val Нове значення
obj Об'єкт який має бути скопійований.
повертає Object Новий об'єкт, еквівалентний оригінальному, окрім зміненої властивості.

Додано у версії v0.8.0

Робить поверхневу копію об'єкта задаючи чи перезаписуючи зазначену властивість новим значенням. Зауважте, що це так само копіює та вирівнює значення прототипів у нового об'єкта. Всі не примітивні значення копіюються за посиланням.

Дивіться також dissoc.

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

Спробуйте у REPL

⬆ вверх

assocPath

[Object]

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

Параметри:

path шлях який треба задати.
val Нове значення
obj Об'єкт який має бути скопійований.
повертає Object Новий об'єкт, еквівалентний оригінальному, окрім зазначеного шляху.

Додано у версії v0.8.0

Робить поверхневу копію об'єкта, встановлюючи чи перезаписуючи вузли, які необхідні для створення зазначеного шляху і вставляючі зазначене значення в кінці того шляху. Зауважте, що це так само копіює та вирівнює значення прототипів у нового об'єкта. Всі не примітивні значення копіюються за посиланням.

Дивіться також dissocPath.

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

// Any missing or non-object keys in path will be overridden
R.assocPath(['a', 'b', 'c'], 42, {a: 5}); //=> {a: {b: {c: 42}}}

Спробуйте у REPL

⬆ вверх

binary

[Function]

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

Параметри:

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

Додано у версії v0.2.0

Обгортає функцію будь-якої арності(включаючи нулярну) у функцію, котра приймає в себе чітко 2 аргументи. Жоден з надлишкових аргументів не буде переданий у обгорнуту функцію.

Дивіться також nAry, unary.

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

var takesTwoArgs = R.binary(takesThreeArgs);
takesTwoArgs.length; //=> 2
// Only 2 arguments are passed to the wrapped function
takesTwoArgs(1, 2, 3); //=> [1, 2, undefined]

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

⬆ вверх

bind

[Function]

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

Параметри:

fn Функція, яку необхідно прив'язати до контексту.
thisObj Контекст, до якого прив'язується функція fn
повертає function Функція, яка буде виконана у контексті thisObj.

Додано у версії v0.6.0

Створює функцію прив'язану до контесту. Зауважте: R.bind не надає додаткових можливостей до Function.prototype.bind.

Дивіться також partial.

var log = R.bind(console.log, console);
R.pipe(R.assoc('a', 2), R.tap(log), R.assoc('a', 3))({a: 1}); //=> {a: 3}
// logs {a: 2}

Спробуйте у REPL

⬆ вверх

both

[Logic]

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

Параметри:

f Предикат
g Інший предикат
повертає function функція, що застосовує свої аргументи до f та g та && їх результатів разом.

Додано у версії v0.12.0

Функція,яка викликає дві переданих функції і повертає && результату. Це поверне результат першої функції, якщо вона falseі, а інакше поверне другу функцію. Зауважте, що коротке замикання, а це означає, що друга функція не буде викликана, якщо перша поверне значення false.

В додачу до функцій, R.both також приймає будь-які сумісні з fantasy-land аплікативні функтори.

Дивіться також and.

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

Спробуйте у REPL

⬆ вверх

call

[Function]

(*… → a),*… → a

Параметри:

fn Функція, яку потрібно застосувати до лишившихся аргументів.
args Будь-яка кількість позиційних аргументів.
повертає *

Додано у версії v0.9.0

Повертає результат виклику першого аргумента та залишивіся аргументи. Інколи це корисно в якості конверційнрї функції для R.converge: перша гілка може утворити функцію, в той час як решта гілок утворюють значення, які будуть передані у ту утворену функцію в якості аргументів.

Дивіться також apply.

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

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

var format = R.converge(R.call, [
                            R.pipe(R.prop('indent'), indentN),
                            R.prop('value')
                        ]);

format({indent: 2, value: 'foo\nbar\nbaz\n'}); //=> '  foo\n  bar\n  baz\n'

Спробуйте у REPL

⬆ вверх

chain

[List]

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

Параметри:

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

Додано у версії v0.3.0

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

Виконується метод chain другого аргументу(якщо він наявний), згадно до FantasyLand Chain специфікації.

Дивіться також apply.

var duplicate = n => [n, n];
R.chain(duplicate, [1, 2, 3]); //=> [1, 1, 2, 2, 3, 3]

R.chain(R.append, R.head)([1, 2, 3]); //=> [1, 2, 3, 1]

Спробуйте у REPL

⬆ вверх

clamp

[Relation]

Ord a => a → a → a → a

Параметри:

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

Додано у версії v0.20.0

Обмежує число межами діапазону.

Також працює для інших впорядкованих типів, таких як строки(Strings) та дати(Dates)

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

Спробуйте у REPL

⬆ вверх

clone

[Object]

{*} → {*}

Параметри:

value Об'єкт або масив, який потрібно зклонувати
Повертає * Глибоку копію переданого об'єкта/масива(val)

Додано у версії v0.1.0

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

Передає до clone метод, якщо той присутній.

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

Спробуйте у REPL

⬆ вверх

compose

[Function]

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

Параметри:

...functions Функції, які мають бути складені.
повертає function Складену функцію

Додано у версії v0.1.0

Виконує складання функції справа наліво. Крайня права функція може мати будь-яку арність, а інші функції повинні бути унарними.

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

Дивіться також pipe.

var classyGreeting = (firstName, lastName) => "The name's " + lastName + ", " + firstName + " " + lastName
var yellGreeting = R.compose(R.toUpper, classyGreeting);
yellGreeting('James', 'Bond'); //=> "THE NAME'S BOND, JAMES BOND"

R.compose(Math.abs, R.add(1), R.multiply(2))(-4) //=> 7

Спробуйте у REPL

⬆ вверх

converge

[Function]

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

Параметри:

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

Додано у версії v0.4.2

Приймає функцію перетворювач та список функцій та повертає нову функцію. Під час виклику ця нова функція застосовується до деяких аргументів, кожна передана функція застосовується до відповідних аргументів. Результат кожної застосованої функції передається як аргумент до функції перетворювача для створення повертаємого значення.

Дивіться також useWith.

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

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

Спробуйте у REPL

⬆ вверх

dec

[Math]

Number → Number

Параметри:

n
повертає Number n - 1

Додано у версії v0.9.0

Зменшує свій аргумент.

Дивіться також inc.

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

Спробуйте у REPL

⬆ вверх

defaultTo

[Logic]

a → b → a | b

Параметри:

| default | Значення за замовчуванням |

val val буде повернуто замість значення за замовчуванням, доки val не є null, undefined або NaN
повертає * Друге значення, якщо воно не є null, undefined або NaN, в іншому разі повертає значення за замовчуванням

Додано у версії v0.10.0

Повертає другий аргумент, якщо він не null, undefined або NaN, в іншому випадку повертає значення за замовчуванням.

var defaultTo42 = R.defaultTo(42);

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

Спробуйте у REPL

⬆ вверх

descend

[Function]

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

Параметри:

fn Функція з арністю один, яка повертає значення, яке може бути порівняне
a Перший елемент, який буде порівняно.
b Другий елемент, який буде порівняно.
повертає Number -1 у випадку, якщо fn(a) > fn(b), або 1, якщо fn(b) > fn(a), у інших випадках поверне 0`

Додано у версії v0.23.0

Створює низхідну функцію порівняння з функції, яка повертає значення, яке, в подальшому, може бути порівняне з < та >.

Дивіться також ascend.

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

Спробуйте у REPL

⬆ вверх

difference

[Relation]

[*] → [*] → [*]

Параметри:

list1 Перший список.
list2 Другий список.
Повертає Array Повертає масив елементів зі списку list1, яких немає у списку list2.

Додано у версії v0.1.0

Знаходить набір(неповторюваних) елементів з першого списку, яких немає у другому списку. Об'єкти та масиви порівнюються з точки зору рівності значень, а не рівності посилань.

Дивіться також differenceWith, symmetricDifference, symmetricDifferenceWith, without.

R.difference([1,2,3,4], [7,6,5,4,3]); //=> [1,2]
R.difference([7,6,5,4,3], [1,2,3,4]); //=> [7,6,5]
R.difference([{a: 1}, {b: 2}], [{a: 1}, {c: 3}]) //=> [{b: 2}]

Спробуйте у REPL

⬆ вверх

differenceWith

[Relation]

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

Параметри:

pred Предикат, який використовується для з'ясування чи два елементи рівні між собою.
list1 Перший список.
list2 Другий список.
Повертає Array Повертає масив елементів зі списку list1, яких немає у списку list2.

Додано у версії v0.1.0

Знаходить набір елементів першого списку, яких немає у другому списку. Повторюваність елементів виявляється згідно зі значенням, яке повертається після застосування наданого предикату щодо обох списків.

Дивіться також difference, symmetricDifference, symmetricDifferenceWith.

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

Спробуйте у REPL

⬆ вверх

dissoc

[Object]

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

Параметри:

prop Ім'я властивості, яку треба дисоціювати(відокремити)
obj Об'єкт, який потрібно клонувати
повертає Object Новий об'єкт, еквівалентний початковому, але без зазначеної властивості.

Додано у версії v0.10.0

Повертає об'єкт, котрий не містить зазначеної властивості prop.

Дивіться також assoc.

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

Спробуйте у REPL

⬆ вверх

dissocPath

[Object]

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

Параметри:

path Шлях до значення, яке треба пропустити
obj Об'єкт, який потрібно клонувати
повертає Object Новий об'єкт без властивості, яка знаходиться за зазначеним шляхом.

Додано у версії v0.11.0

Робить поверхневу копію об'єкту, пропускаючи властивість за вказаним шляхом. Зауважте, що це також копіює і вирівнює властивості прототипу до нового об'єкту. Всі непримітивні властивості копіюються за посиланням.

Дивіться також assocPath.

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

Спробуйте у REPL

⬆ вверх*

divide

[Math]

Number → Number → Number

Параметри:

a Перше значення.
b Друге значення.
повертає Number Результат a / b.

Додано у версії v0.1.0

Ділить два числа. Еквівалент для a / b.

Дивіться також multiply.

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

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

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

Спробуйте у REPL

⬆ вверх

drop

[List]

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

Параметри:

| n | :---|:---| | list | | повертає * | Копію списку без перших n елементів. |

Додано у версії v0.1.0

Повертає все, окрім перших n елементів переданого списку, строки чи трансдюсера/трансформера (чи об'єкта з drop методом).

Виконується з другим аргументом, якщо присутній.

See also take, transduce, dropLast, dropWhile. Дивіться також take, transduce, dropLast, dropWhile

R.drop(1, ['foo', 'bar', 'baz']); //=> ['bar', 'baz']
R.drop(2, ['foo', 'bar', 'baz']); //=> ['baz']
R.drop(3, ['foo', 'bar', 'baz']); //=> []
R.drop(4, ['foo', 'bar', 'baz']); //=> []
R.drop(3, 'ramda');               //=> 'da'

Спробуйте у REPL

⬆ вверх

dropLast

[List]

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

n Кількість елементів списку, які треба пропустити.
list Список елементів який буде розглядатись.
повертає Array Копія списку з лише першими list.length - n елементами.

Додано у версії v0.16.0

Повертає список, який містить все окрім останніх n елементів переданого списку.

Дивіться також takeLast, drop, dropWhile, dropLastWhile.

R.dropLast(1, ['foo', 'bar', 'baz']); //=> ['foo', 'bar']
R.dropLast(2, ['foo', 'bar', 'baz']); //=> ['foo']
R.dropLast(3, ['foo', 'bar', 'baz']); //=> []
R.dropLast(4, ['foo', 'bar', 'baz']); //=> []
R.dropLast(3, 'ramda');               //=> 'ra'

Спробуйте у REPL

⬆ вверх

dropLastWhile

[List]

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

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

Додано у версії v0.16.0

Повертає новий список, без кінцевих елементів переданого списку, які задовольняють умову переданої функції-предикату. Вона передає кожне значення зправа до переданого предикату, відсіюючи елементи допоки функція-предикат повертає falsy значення. Функція-предикат застосовується до одного аргументу: (value).

Дивіться також takeLastWhile, addIndex, drop, dropWhile.

var lteThree = x => x <= 3;

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

R.dropLastWhile(x => x !== 'd' , 'Ramda'); //=> 'Ramd'

Спробуйте у REPL

⬆ вверх

dropRepeats

[List]

[a] → [a]

Параметри:

list Масив, який треба розглянути.
повертає Array list без елементів, що повторюються.

Додано у версії v0.14.0

Повертає новий список без елементів, що послідовно повторюються. Використовується R.equals для визначення рівності.

Поводиться як трансдюсер, якщо передано трансформер замість списку.

Дивіться також transduce.

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

Спробуйте у REPL

⬆ вверх

dropRepeatsWith

[List]

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

Параметри:

pred Предикат, за допомогою якого перевіряється, чи є два елементи рівними один одному
list Масив, який треба розглянути.
повертає Array list без елементів, що повторюються.

_Додано у версії v0.14.0

Повертає новий список без жодних послідовно повторюваних елементів. Рівність визначається застосуванням переданого предиката до кожної пари послідовних елементів. Перший елемент в серії рівних елементів буде збережений.

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

Дивіться також transduce.

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

Спробуйте у REPL

⬆ вверх

dropWhile

[List]

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

Параметри:

fn Фунція, яка буде викликатися у кожній ітерації.
xs Колекція, яку треба ітерувати.
повертає Array Новий масив.

Додано у версії v0.9.0

Повертає новий список, виключаючи початкові елементи переданого списку, які вдовольняють умову переданого предикату. Ця функція передає кожне значення зі списку у наданий предикат, пропускаючи елементи, поки предикативна функція повертає true. Предика застосовується до одного елементу: (value).

Передає до dropWhile метод другого аргумента, якщо присутній.

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

Дивіться також takeWhile, transduce, addIndex.

var lteTwo = x => x <= 2;

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

R.dropWhile(x => x !== 'd' , 'Ramda'); //=> 'da'

Спробуйте у REPL

⬆ вверх

identity

[Function]

a → a

Параметри:

x Значення яке повернути.
повертає * Введене значення x

Додано у версії v0.1.0

Функція, яка нічого не робить, але повертає переданий в неї аргумент. Гарно підходить, щоб бути функцією за замовчуванням чи функцією-заповнювачем.

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

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

Спробуйте у REPL

⬆ вверх

into

[List]

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

Параметри:

acc Початкове значення накопичувача.
xf Функція-перетворювач. Отримує трансформер і повертає трансформер.
list Список, який потрібно перебрати.
повертає * Остаточне накопичене значення

Додано у версії v0.12.0

Перетворює елементи списку за допомогою перетворювача(transducer) і додає трансформовані елементи до накопичувача, використовуючи відповідну функцію-ітератор в залежності від типу накопичувача.

Накопичувач може бути масивом, об'єктом чи трансформером. Перебрані елементи буде додано до масивів і об'єднано у строки. Об'єкти будуть об'єднані безпосередньо чи масиви з двома елементами будуть об'єднані у вигляді пар ключ-значення.

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

Ітерації виконуються за допомогою R.reduce після ініціалізації перетворювача(transducer).

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

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

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

Спробуйте у REPL

⬆ вверх

map

[List]

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

Параметри:

fn Фунція, яка має бути викликана по відношенню до кожного елемента зі вхідного списку (list).
list Масив, який має бути перебраний.
повертає Array Новий список.

Додано у версії v0.1.0

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

Ramda надає зручну реалізацію map для Array та Object, тому ця функція може бути застосована як до [1, 2, 3], так і до {x: 1, y: 2, z: 3}.

Застосовується до map методу другого аргументу, якщо присутній.

Поводиться як трансдьюсер(transducer), якщо transformer передано на місці списку.

Також сприймає функції як функтори і зробить з них композицію.

Дивіться також transduce, addIndex.

var double = x => x * 2;

R.map(double, [1, 2, 3]); //=> [2, 4, 6]

R.map(double, {x: 1, y: 2, z: 3}); //=> {x: 2, y: 4, z: 6}

Спробуйте у REPL

⬆ вверх

none

[List]

(a → Boolean) → [a] → Boolean

Параметри:

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

Додано у версії v0.12.0

Повертає true, якщо жоден елемент списку не відповідає предикату, в іншому випадку поверне false.

Застосовує до кожного методу другого аргументу, якщо він присутній.

Дивіться також all, any.

var isEven = n => n % 2 === 0;

R.none(isEven, [1, 3, 5, 7, 9, 11]); //=> true
R.none(isEven, [1, 3, 5, 7, 8, 11]); //=> false

Спробуйте у REPL

⬆ вверх

once

[Function]

(a… → b) → (a… → b)

Параметри:

fn Функція, яка має бути обгорнута у "викликати-лише-раз"(call-only-once) обгортку.
Повертає Function Повертає обгорнуту функцію.

Додано у версії v0.1.0

Приймає функцію fn і повертає функцію, яка забезпечує виклик функції fn таким чином, що fn може бути викликана лише один раз, в незалежності від того, скільки разів викликається повертаєма функція. Вперше вираховане значення буде повернене при всіх подальших викликах.

var addOneOnce = R.once(x => x + 1);
addOneOnce(10); //=> 11
addOneOnce(addOneOnce(50)); //=> 11

Спробуйте у REPL

⬆ вверх

partial

[Function]

((a, b, c, …, n) → x) → [a, b, c, …] → ((d, e, f, …, n) → x)

Параметри:

f Функція
args Перелік аргументів
Повертає Фунцію

Додано у версії v0.10.0

Приймає функцію f та список аргументів args і повертає функцію(скажімо g). Коли застосована, функція g повертає результат застосування функції f щодо аргументів args, котрі були передані зпочатку, і слідом повертає аргументи передані у функцію g.

Дивіться також partialRight.

var multiply2 = (a, b) => a * b;
var double = R.partial(multiply2, [2]);
double(2); //=> 4

var greet = (salutation, title, firstName, lastName) =>
  salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!';

var sayHello = R.partial(greet, ['Hello']);
var sayHelloToMs = R.partial(sayHello, ['Ms.']);
sayHelloToMs('Jane', 'Jones'); //=> 'Hello, Ms. Jane Jones!'

Спробуйте у REPL

path

[Object]

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

Параметри:

path Шлях за яким треба провести пошук.

| obj | Об'єкт, в якому треба віднайти потрібну властивість. | | повертає * | Дані які знаходять за вказаний шляхом path. |

Додано у версії v0.2.0

Знаходить значення за вказаним шляхом.

Дивіться також path.

R.path(['a', 'b'], {a: {b: 2}}); //=> 2
R.path(['a', 'b'], {c: {b: 2}}); //=> undefined

Спробуйте у REPL

⬆ вверх

pathEq

[Relation]

[Idx] → a → {a} → Boolean

| val | Значення, з яким потрібно порівняти вкладену властивість. | | obj | Об'єкт, в якому треба перевірити вкладену властивість. | | повертає * | Дані які знаходять за вказаний шляхом path. |

Додано у версії v0.7.0

Визначає чи об'єкт містить певне значення за вказаним шляхом в плані R.equals. Найчастіше використовується для фільтрації списку.

var user1 = { address: { zipCode: 90210 } };
var user2 = { address: { zipCode: 55555 } };
var user3 = { name: 'Bob' };
var users = [ user1, user2, user3 ];
var isFamous = R.pathEq(['address', 'zipCode'], 90210);
R.filter(isFamous, users); //=> [ user1 ]

Спробуйте у REPL.

⬆ вверх

pipe

[Function]

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

Параметри:

...functions
повертає function

Додано у версії v0.1.0

Виконує складання функції зліва направо. Крайня ліва функція може мати будь-яку арність, а інші функції повинні бути унарними.

В деяких бібліотеках ця функція називається sequence.

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

Дивіться також compose.

var f = R.pipe(Math.pow, R.negate, R.inc);

f(3, 4); // -(3^4) + 1

Спробуйте у REPL

⬆ вверх

prepend

[List]

a → [a] → [a]

Параметри:

el Елемент, який треба додати до початку списку.
list Список елементів до якого слід додати елемент.
повертає Array Новий масив.

Додано у версії v0.1.0

Повертає новий список, в якому знаходяться елементи переданого в якості параметру списку, та на початку елемент переданий в якості аргументу.

Дивіться також append.

R.prepend('fee', ['fi', 'fo', 'fum']); //=> ['fee', 'fi', 'fo', 'fum']

Спробуйте у REPL

⬆ вверх

props

[Object]

s → {s: a} → a | Undefined

Параметри:

p Ім'я властивості
obj Об'єкт запиту
повертає * Значення на місці obj.p.

Додано у версії v0.1.0

Повертає функцію, яка, коли в неї передано об'єкт, повертає відповідну властивість цього об'єкту, якщо вона існує.

Дивіться також path.

R.prop('x', {x: 100}); //=> 100
R.prop('x', {}); //=> undefined

Спробуйте у REPL

⬆ вверх

reduce

[List]

((a, b) → a) → a → [b] → a

Параметри:

fn Функція-ітератор. Отримує два значення, накопичувач(аккумулятор) і поточний елемент з масиву.
acc Значення накопичувача.
list Список, який потрібно перебрати.
повертає * Остаточне накопичене значення

Додано у версії v0.1.0

Під час ітерації(перебору) списку повертає єдиний елемент, послідовно викликаючи функцію-ітератор і передаючи їй значення акумулятора і поточне значення з масиву, а потім передає результат до наступного виклику.

Функція-ітератор отримує два значення: (acc, value). Вона може використовувати R.reduced для комбінації ітерації.

Порядок аргументів у функції-ітераторі reduceRight є таким: (value, acc).

Зауважте: R.reduce не пропускає видалені чи нерозподілені індекси(розріджені масиви), на відміну від вбудованого в javascript методу 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

Спробуйте у REPL

⬆ вверх

reduced

[List]

a → *

Параметри:

x Фінальний результат reduce.
повертає * Загорнуте значення

Додано у версії v0.15.0

Повертає значення завернуте, щоб відзначити, що це остаточне значення функцій reduce та transduce. Значення, що повертається слід розглядати як чорний ящик: немає гарантій, що внутрішня структура стабільна.

Зауважте: ця оптимізація не доступна для функцій не перечислених вище. Наприклад, наразі немає підтримки reduceRight.

Дивіться також reduce, transduce.

R.reduce(
 (acc, item) => item > 3 ? R.reduced(acc) : acc.concat(item),
 [],
 [1, 2, 3, 4, 5]) // [1, 2, 3]

Спробуйте у REPL

⬆ вверх

reduceRight

[List]

(a, b → b) → b → [a] → b

Параметри:

fn Функція-ітератор. Отримує два значення, поточний елемент з масиву і накопичувач(аккумулятор).
acc Значення накопичувача.
list Список, який потрібно перебрати.
повертає * Остаточне накопичене значення

Додано у версії v0.1.0

Під час ітерації(перебору) списку повертає єдиний елемент, послідовно викликаючи функцію-ітератор і передаючи їй значення акумулятора і поточне значення з масиву, а потім передає результат до наступного виклику.

Схожий на reduce, окрім того, що проходиться по переданому списку справа наліво.

Функція-ітератор отримує два значення: (value, acc), в той час як послідовність аргументів у методі reduce - навпаки: (acc, value).

Зауважте: R.reduceRight не пропускає видалені чи нерозподілені індекси(розріджені масиви), на відміну від вбудованого в javascript методу 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

Спробуйте у REPL

⬆ вверх

set

[Object]

Lens s a → a → s → s Lens s a = Functor f => (a → f a) → s → f s

Параметри:

lens
v
x
повертає *

Додано у версії v0.16.0

Повертає результат "оновлення" структури даних після заміни її конкретної частини, визначеної лінзою, на нове надане значення.

Дивіться також prop, lensIndex, lensProp.

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

Спробуйте у REPL

⬆ вверх

sort

[List]

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

Параметри:

comparator Функція сортування :: a -> b -> Int
list Список, який необхідно відсортувати
повертає Array Новий масив з елементами, які відсортовані за допомогою функції порівняння(comparator- компаратор).

Додано у версії v0.1.0

Повертає копію списку, відсортованого за допомогою функції порівняння, яка повинна щоразу приймати два значення і повертати від'ємне число, якщо перше значення менше за друге, і позитивне число, коли перше значення більше за друге, і нуль, коли обидва значення рівні. Будь ласка, зауважте, що це копія списку. R.sort не модифікує початковий список.

var diff = function(a, b) { return a - b; };
R.sort(diff, [4,2,7,5]); //=> [2, 4, 5, 7]

Спробуйте у REPL

⬆ вверх

sortBy

[Relation]

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

Параметри:

fn
list Список, який необхідно відсортувати
повертає Array Новий список, відсортований за ключами, згенерованими функцією fn

Додано у версії v0.1.0

Сортує список згідно з наданою функції.

var sortByFirstItem = R.sortBy(R.prop(0));
var sortByNameCaseInsensitive = R.sortBy(R.compose(R.toLower, R.prop('name')));
var pairs = [[-1, 1], [-2, 2], [-3, 3]];
sortByFirstItem(pairs); //=> [[-3, 3], [-2, 2], [-1, 1]]
var alice = {
  name: 'ALICE',
  age: 101
};
var bob = {
  name: 'Bob',
  age: -10
};
var clara = {
  name: 'clara',
  age: 314.159
};
var people = [clara, bob, alice];
sortByNameCaseInsensitive(people); //=> [alice, bob, clara]

Спробуйте у REPL

⬆ вверх

sortWith

[Relation]

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

Параметри:

functions Список функцій порівнянь
list Список, який необхідно відсортувати
повертає Array Новий список, відсортований згідно з функціями порівняння

Додано у версії v0.23.0

Сортує список згідно зі списком функцій порівняннь.

var alice = {
  name: 'alice',
  age: 40
};
var bob = {
  name: 'bob',
  age: 30
};
var clara = {
  name: 'clara',
  age: 40
};
var people = [clara, bob, alice];
var ageNameSort = R.sortWith([
  R.descend(R.prop('age')),
  R.ascend(R.prop('name'))
]);
ageNameSort(people); //=> [alice, clara, bob]

Спробуйте у REPL

⬆ вверх

subtract

[Math]

Number → Number → Number

Параметри:

a перший аргумент
b другий аргумент
повертає Number Результат a-b

Додано у версії v0.1.0

Віднімає свій другий аргумент від першого.

Дивіться також add.

R.subtract(10, 8); //=> 2

var minus5 = R.subtract(R.__, 5);
minus5(17); //=> 12

var complementaryAngle = R.subtract(90);
complementaryAngle(30); //=> 60
complementaryAngle(72); //=> 18

Спробуйте у REPL

⬆ вверх

transduce

[List]

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

Параметри:

xf Функція-перетворювач. Отримує трансформер і повертає трансформер.
fn Функція-ітератор. Отримує два значення, накопичувач(аккумулятор) і поточний елемент з масиву. За необхідності, загорнутий як трансформер і використовується для ініціалізації перетворювача
acc Початкове значення накопичувача.
list Список, який потрібно перебрати.
повертає * Остаточне накопичене значення

Додано у версії v0.12.0

Ініціалізує перетворювач, використовуючи передану функцію-ітератор. Повертає єдиний елемент перебираючи список, послідовно викликаючи перетворену функцію-ітератор і передаючи їй значення акумулятора і поточне значення з масиву, а потім передає результат до наступного виклику.

Функція ітератор отримує два значення: (acc, value) (накопичувач та значення). Вона буде загорнута як трансформер для ініціалізації перетворювача. Трансформер може бути переданий безпосередньо на місці функції-ітератора. У обох випадках ітерація може бути достроково зупинена функції R.reduced.

Перетворювач являє собою функцію, яка приймає трансформер, повертає трансформер і може бути зкладена(composed) безпосередньо.

Трансформер - це об'єкт, який забезпечує бінарне(2-арне) зменшення функції-ітератора, крок, нулярне(0-арне) початкове значення функції, init, та унарний (1-арний) результат функції витягання, результат. Функція крок використовується в якості функції-ітератора у зменшенні(reduce). Функція результат використовується для перетворення остаточного накопичення у повертаємий тип і у більшості випадків являється R.identity. Функція init може використовуватись для передачі початкового накопичувача, але ігнорується методом transduce.

Ітерації виконуються за допомогою R.reduce після ініціалізації перетворювача(transducer).

Дивіться також reduce, reduced, into.

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

R.transduce(transducer, R.flip(R.append), [], numbers); //=> [2, 3]

Спробуйте у REPL

⬆ вверх

update

[List]

Number → a → [a] → [a]

Параметри:

idx Індекс, який необхідно оновити
x Значення, на яке має на зазначеному за індексом місці у масиві, що повернеться.
list Цільовий масиво-подібний об'єкт, який має бути оновленим.
повертає Array A copy of list with the value at index idx replaced with x.

Додано у версії v0.14.0

Повертає нову копію масиву з елементом(на вказаному за індексом місці) заміненим на передане значення.

Дивіться також adjust.

R.update(1, 11, [0, 1, 2]);     //=> [0, 11, 2]
R.update(1)(11)([0, 1, 2]);     //=> [0, 11, 2]

Спробуйте у REPL

⬆ вверх

useWith

[Function]

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

Параметри:

fn Функція яку треба обгорнути.
transformers Список функцій трансформерів.
повертає function Обгорнута функція.

Додано у версії v0.1.0

Приймає функцію 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

Спробуйте у REPL

⬆ вверх

xprod

[List]

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

Параметри:

as Перший список.
bs Другий список.
повертає Array Список, створений за допомогою поєднання кожної можливої пари від as до bs у пари ([a, b]).

Додано у версії v0.1.0

Створює новий список з двох переданих, за допомогою створення всіх можливих пар з цих списків.

R.xprod([1, 2], ['a', 'b']); //=> [[1, 'a'], [1, 'b'], [2, 'a'], [2, 'b']]

Спробуйте у REPL

⬆ вверх

zip

[List]

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

Параметри:

list1 Перший список.
list2 Другий список.
повертає Array Спикок, утворений попарним з'єднанням елементів з однаковим індексом зі списків list1 та list2.

Додано у версії v0.1.0

Створює новий список з двох переданих, методом попарного поєднання елементів, що мають у своїх списках однакові індекси. Утворений з двох списків масив має скорочену довжину. Зауважте: zip є еквівалентним до zipWith(function(a, b) { return [a, b] }).

R.zip([1, 2, 3], ['a', 'b', 'c']); //=> [[1, 'a'], [2, 'b'], [3, 'c']]

Спробуйте у REPL

⬆ вверх

zipObj

[List]

[String] → [*] → {String: *}

Параметри:

keys Масив, що стане властивостями фінального об'єкту.
values Список значення фінального об'єкту.
повертає Object Об'єкт, утворений попарним поєднанням елементів з однаковими індексами в якості ключ-значення.

Додано у версії v0.3.0

Створює новий об'єкт зі списку ключів та списку значення. Поєднання ключ/значення обрізається до довжини більш короткого з двох списків. Зауважте: zipObj еквівалентний до pipe(zipWith(pair), fromPairs).

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

Спробуйте у REPL

⬆ вверх

zipWith

[List]

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

Параметри:

fn Функція, яку слід використати для поєднання двох елементів у одне значення.
list1 Перший масив.
list2 Другий масив.
повертає Array Список створений за допомогою поєднання елементів з однаковими індексами у списках list1 та list2 та застосуванню щодо них функції fn.

Додано у версії v0.1.0

Створює новий список з двох переданих завдяки застосуванню функції до кожної пари, утвореної з двох елементів з однаковими індексами у своїх списках. і списку ключів та списку значення. Фінальний масив скорочується до довжини найкоротшого з переданих списків.

var f = (x, y) => {
  // ...
};
R.zipWith(f, [1, 2, 3], ['a', 'b', 'c']);
//=> [f(1, 'a'), f(2, 'b'), f(3, 'c')]

Спробуйте у REPL

⬆ вверх