A, B, C, D, J, I, M, N, O, P, R, S, T, U, X, Z
- __
Function
- add
Math
- addIndex
Function
- adjust
List
- all
List
- allPass
Logic
- always
Function
- and
Logic
- any
List
- anyPass
List
- ap
Function
- aperture
List
- append
List
- apply
Function
- applySpec
Function
- ascend
Function
- assoc
Object
- assocPath
Object
- dec
Math
- defaultTo
Logic
- descend
Function
- difference
Relation
- differenceWith
Relation
- dissoc
Object
- dissocPath
Object
- divide
Math
- drop
List
- dropLast
List
- dropLastWhile
List
- dropRepeats
List
- dropRepeatsWith
List
- dropWhile
List
- juxt ``
- map
List
- once
Function
- reduce
List
- reduced
List
- reduceRight
List
- transduce
List
- xprod
List
Додано у версії 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
Number → Number → Number
a |
---|
b |
повертає Number |
Додано у версії v0.1.0
Додає два значення
Дивіться також subtract.
R.add(2, 3); //=> 5
R.add(7)(10); //=> 17
Спробуйте у REPL
((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
(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
(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
[(*… → 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
a → (* → a)
val | Значення, яке необхідно обгорнути у функцію |
---|---|
повертає function | функція :: * -> val. |
Додано у версії v0.1.0
Повертає функцію, яка завжди повертає передане значення. Зауважте, що для не примітивів повертаєме значення буде посиланням а оригінальне значення.
Ця функція відома як const
, константа, чи K (для K комбінатор) у інших мовах та бібліотеках.
var t = R.always('Tee');
t(); //=> 'Tee'
Спробуйте у REPL
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
(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
[(*… → 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
[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
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
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
(*… → a) → [*] → a
fn | Функція, яка буде викликана з аргументами args |
---|---|
args | Аргументи, з якими має бути киликана функція fn . |
повертає * результат | Результат, рівний fn(...args) |
Додано у версії v0.7.0
Застосовує функцію fn
до списку аргументів args
. Це корисно для створення функції з фіксованою арністю із варіаційної функції. fn
повинна бути прив'язаною функцією, у разі якщо контекст важливий.
var nums = [1, 2, 3, -99, 42, 6, 7];
R.apply(Math.max, nums); //=> 42
Спробуйте у REPL
{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
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
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
[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
(* → c) → (a, b → c)
fn | Функція, яку необхідно обгорнути. |
---|---|
повертає function | Нова функція, яка огортає функцію fn . Нова функція гарантовано має арність 2. |
Додано у версії v0.2.0
Обгортає функцію будь-якої арності(включаючи нулярну) у функцію, котра приймає в себе чітко 2 аргументи. Жоден з надлишкових аргументів не буде переданий у обгорнуту функцію.
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])
(* → *) → {*} → (* → *)
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
(*… → 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
(*… → 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 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
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
{*} → {*}
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
((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
(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
Number → Number
n |
---|
повертає Number n - 1 |
Додано у версії v0.9.0
Зменшує свій аргумент.
Дивіться також inc.
R.dec(42); //=> 41
Спробуйте у REPL
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
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
[*] → [*] → [*]
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
((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
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
[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
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
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
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
(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
[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
((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
(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
a → a
x | Значення яке повернути. |
---|---|
повертає * | Введене значення x |
Додано у версії v0.1.0
Функція, яка нічого не робить, але повертає переданий в неї аргумент. Гарно підходить, щоб бути функцією за замовчуванням чи функцією-заповнювачем.
R.identity(1); //=> 1
var obj = {};
R.identity(obj) obj; //=> true
Спробуйте у REPL
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
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
(a → Boolean) → [a] → Boolean
fn | Функція предикат |
---|---|
list | Масив, який має бути оцінений. |
повертає Boolean | true , якщо предикат не вдовольняє жоден з елементів, в іншому випадку повернеться false . |
Додано у версії v0.12.0
Повертає true
, якщо жоден елемент списку не відповідає предикату, в іншому випадку поверне false
.
Застосовує до кожного методу другого аргументу, якщо він присутній.
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
(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
((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
[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
[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.
(((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
a → [a] → [a]
el | Елемент, який треба додати до початку списку. |
---|---|
list | Список елементів до якого слід додати елемент. |
повертає Array | Новий масив. |
Додано у версії v0.1.0
Повертає новий список, в якому знаходяться елементи переданого в якості параметру списку, та на початку елемент переданий в якості аргументу.
Дивіться також append.
R.prepend('fee', ['fi', 'fo', 'fum']); //=> ['fee', 'fi', 'fo', 'fum']
Спробуйте у REPL
s → {s: a} → a | Undefined
p | Ім'я властивості |
---|---|
obj | Об'єкт запиту |
повертає * | Значення на місці obj.p . |
Додано у версії v0.1.0
Повертає функцію, яка, коли в неї передано об'єкт, повертає відповідну властивість цього об'єкту, якщо вона існує.
Дивіться також path.
R.prop('x', {x: 100}); //=> 100
R.prop('x', {}); //=> undefined
Спробуйте у REPL
((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
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
(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
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
(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
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
[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
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
(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
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
(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
[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
[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
[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
(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