Ramda API 已经快到 300 个了,对每个 API 按类型分别进行简介,当作 Ramda 的一份 CheatSheet 。
列表
Action | Function |
---|---|
列表转换 | map |
列表过滤:过滤出符合条件的元素 | filter |
列表过滤:过滤掉符合条件的元素 | reject |
列表折叠:从左向右对所有元素依次归约(折叠) | reduce |
列表折叠:从右向左对所有元素依次归约(折叠) | reduceRight |
列表折叠(增强版) | transduce |
列表去重 | uniq |
列表去重:对处理后的元素做相等性判断 | uniqBy |
列表去重:通过断言函数(predicate)判断 | uniqWith |
列表排序 | sort |
列表翻转 | reverse |
列表拼接 | concat |
列表长度 | length |
列表表头拼接元素 | prepend |
列表表尾拼接元素 | append |
更新指定索引处的值 | adjust |
替换指定索引处的值 | update |
将列表元素转换为其指定的属性值,等价于 R.map(R.prop) | pluck |
为列表迭代函数添加两个参数:索引和整个列表 | addIndex |
取出特定索引范围内的元素 | slice |
将列表通过分隔符拼接成字符串 | join |
取出第 N 个元素 | nth |
取出前 N 个元素 | take |
取出后 N 个元素 | takeLast |
从前往后取出满足条件的元素,直至不满足条件的首个元素止 | takeWhile |
从后向前取出满足条件的元素,直至不满足条件的首个元素止 | takeLastWhile |
删除前 N 个元素 | drop |
删除后 N 个元素 | dropLast |
从前往后删除满足条件的元素,直至不满足条件的首个元素止 | dropWhile |
从后向前删除满足条件的元素,直至不满足条件的首个元素止 | dropLastWhile |
取出首个元素 | head |
取出末尾元素 | last |
取出前 length - 1 个元素(删除末尾元素) | init |
取出后 length - 1 个元素(删除首个元素) | tail |
求差集:{a∣a∈xs ∩ a∉ys} | difference |
求差集:{a∣a∉xs ∩ a∈ys} | without |
求差集:根据条件计算第一个列表与第二个列表的差集 | differenceWith |
求对称差集:{(xs ∪ ys) - (xs ∩ ys)} | symmetricDifference |
求对称差集:根据条件计算所有不属于两个列表交集的元素 | symmetricDifferenceWith |
求交集:{xs ∩ ys} | intersection |
求交集:从 xs 中挑选出在 ys 中符合条件的元素 | innerJoin |
求并集:{xs ∪ ys} | union |
求并集:根据条件判断两元素是否重复 | unionWith |
查找列表中首个满足条件的元素 | find |
查找列表中首个满足条件的元素的索引 | findIndex |
查找列表中最后一个满足条件的元素 | findLast |
查找列表中最后一个满足条件的元素的索引 | findLastIndex |
查找给定元素在列表中首次出现时的索引 | indexOf |
查找给定元素在列表中末次出现时的索引 | lastIndexOf |
列表判断:判断元素是否包含在列表中 | contains |
列表判断:判断是否列表中所有元素都满足条件 | all |
列表判断:判断是否列表中所有元素都不满足条件 | none |
列表判断:判断是否列表中存在满足条件的元素 | any |
列表判断:判断列表是否以给定的值开头 | startsWith |
列表判断:判断列表是否以给定的值结尾 | endsWith |
列表分组:按是否符合条件,将元素分为两组 | partition |
列表分组:对列表中元素按指定规则分组 | groupBy |
列表分段:对列表中元素按指定规则分段 | groupWith |
列表分组:对列表中元素按指定规则分组折叠 | reduceBy |
列表分割:在指定索引处 | splitAt |
列表分割:每隔 N 个元素 | splitEvery |
列表分割:按条件分割 | splitWhen |
对两个列表相同位置的元素进行组合 | zip |
对两个列表相同位置的元素进行键值对组合,fromPairs ∘ zip | zipObj |
对两个列表相同位置的元素按规则进行组合 | zipWith |
由一系列键值对列表创建对象 | fromPairs |
列表彻底扁平化 | flatten |
列表单层扁平化 | unnest |
先对列表内元素做 Kleisli 映射,再做扁平化,flatMap,>>= | chain |
函子间的自然变化? | sequence |
列表插入 | insert |
将子列表插入列表 | insertAll |
在列表元素之间插入分割元素 | intersperse |
列表转换 + 折叠? | into |
将 reduce 的迭代过程记录下来 | mapAccum |
将 reduceRight 的迭代过程记录下来 | mapAccumRight |
合并多个对象 | mergeAll |
由两个参数组成列表 | pair |
从 reduce 或 transduce 中提前退出迭代时的值 | reduced |
可以提前退出的 reduce 迭代 | reduceWhile |
列表生成:生成左闭右开的升序数字列表 | range |
列表生成:生成含有 N 个同一元素的列表 | repeat |
列表生成:函数执行 N 次,生成 N 元列表 | times |
列表生成:通过迭代函数生成列表 | unfold |
二维列表行列式转换 | transpose |
二维列表生成 | xprod |
函数
Action | Function |
---|---|
函数组合:纵向,从右往左 | compose |
函数组合:纵向,从左往右 | pipe |
函数组合:纵向 | o |
函数组合:横向 | converge |
函数组合:横向 | useWith |
Kleisili 函数组合 | composeK |
Kleisili 函数组合 | pipeK |
Promise 函数组合 | composeP |
Promise 函数组合 | pipeP |
单位函数:输出等于输入 | identity |
函数柯里化 | curry |
N 元函数柯里化 | curryN |
将柯里化函数 转为 N 元函数 | uncurryN |
柯里化函数的参数占位符 | __ |
参数部分调用:从左往右 | partial |
参数部分调用:从右往左 | partialRight |
函数缓存 | memoize |
函数缓存:可以自定义缓存键值 | memoizeWith |
只执行一次的函数 | once |
创建返回恒定值的函数 | always |
恒定返回 true 的函数 |
T |
恒定返回 false 的函数 |
F |
Applicative Functor 的 ap 方法,<*> | ap |
将函数作用于参数列表 | apply |
将接受 单列表参数 的函数转为接受 普通参数列表 的函数 | unapply |
将首个参数(函数)作用于其余参数 | call |
绑定函数上下文 | bind |
利用属性值为函数的对象生成同构对象 | applySpec |
将函数列表作用于参数列表 | juxt |
将给定值传给给定函数,CPS: flip($) | applyTo |
比较函数,一般用于排序 | comparator |
升序比较函数 | ascend |
降序比较函数 | descend |
将函数封装为 N 元函数 | nArg |
将函数封装为一元函数 | unary |
将函数封装为二元函数 | binary |
提取第 N 个参数 | nthArg |
将构造函数封装为普通函数,创建实例时,不需要 new 操作符 | construct |
将构造函数封装为 N 元普通函数,创建实例时,不需要 new 操作符 | constructN |
通过函数名调用函数 | invoker |
创建相应类型的空值 | empty |
判断是否为空值 | isEmpty |
交换函数前两个参数的位置 | flip |
函数提升 | lift |
N 元函数提升 | liftN |
生成单元素列表 | of |
输出等于输入,但产生副作用的函数,一般用于调试 | tap |
异常捕获 | tryCatch |
对象
Action | Function |
---|---|
属性设置 | assoc |
属性按路径设置 | assocPath |
属性删除 | dissoc |
属性按路径删除 | disscoPath |
获取属性值 | prop |
获取属性值,带有默认值 | propOr |
获取路径上的属性值 | path |
获取路径上的属性值,带有默认值 | pathOr |
判断属性是否满足给定的条件 | propSatisfies |
判断属性是否与给定值相等 | propEq |
判断两个对象指定的属性值是否相等 | eqProps |
判断路径上的属性值是否满足给定的条件 | pathSatisfies |
判断路径上的属性值是否与给定值相等 | pathEq |
获取属性值组成的列表 | props |
判断属性是否为给定类型 | propIs |
判断多个属性是否同时满足给定的条件 | where |
判断多个属性是否等于给定对应属性值 | whereEq |
删除多个属性 | omit |
提取多个属性 | pick |
提取多个属性 | pickAll |
对列表中元素提取多个属性,模拟 SQL 的 select |
project |
提取键值满足条件的属性 | pickBy |
对特定属性进行特定变换 | evolve |
是否包含指定的键 | has |
是否包含指定的键:包括原型链上的键 | hasIn |
键值对换位 | invertObj |
键值对换位:将值放入数组中 | invert |
取出所有的键 | keys |
取出所有的键:包括原型链上的键 | keysIn |
取出所有的值 | values |
取出所有的值:包括原型链上的值 | valuesIn |
透镜:包括属性的 getter 和 setter | lens |
透镜:指定索引的透镜 | lensIndex |
透镜:指定路径的透镜 | lensPath |
透镜:指定属性的透镜 | lensProp |
透镜:对被 lens 聚焦的属性做变换 |
over |
透镜:对被 lens 聚焦的属性进行设置 |
set |
透镜:读取被 lens 聚焦的属性值 |
view |
Object 版 map ,转换函数参数:(value, key, obj) |
mapObjIndexed |
对象合并 | merge |
对象合并:对重复的属性值按给定规则合并 | mergeWith |
对象合并:对重复的属性值按给定规则合并 | mergeWithKey |
对象深递归合并:以左侧对象属性为主 | mergeDeepLeft |
对象深递归合并:以右侧对象属性为主 | mergeDeepRight |
对象深递归合并:对重复的非对象类型的值按给定规则合并 | mergeDeepWith |
对象深递归合并:对重复的非对象类型的值按给定规则合并 | mergeDeepWithKey |
创建包含单个键值对的对象 | objOf |
将对象键值对转换为元素为键值二元组的列表 | toPairs |
将对象键值对转换为元素为键值二元组的列表:包括原型链上的键 | toPairsIn |
将二元组的列表转换为对象 | fromPairs |
逻辑运算
Action | Function |
---|---|
判断是否满足所有条件 | allPass |
判断是否满足任一条件 | anyPass |
判断是否同时满足两个条件 | both |
判断是否满足两个条件中的任意一个 | either |
逻辑与操作 | and |
逻辑或操作 | or |
模式匹配,相当于多个 if/else |
cond |
单个 if/else ,cond 的特例 |
ifElse |
满足条件,则执行处理函数,否则原样返回输入值,ifElse 的特例 |
when |
不满足条件时,执行处理函数,否则原样返回输入值,ifElse 的特例 |
unless |
逻辑非操作,参数为布尔值 | not |
对函数返回值取反 | complement |
添加默认值 | defaultTo |
一直计算,直到满足给定条件 | until |
判断给定值是否为该类型的空值 | isEmpty |
判断给定值是否为 null 或 undefined |
isNil |
返回给定值所属类型的空值 | empty |
关系运算
Action | Function |
---|---|
等于 | equals |
完全相等 | identical |
通过规则判断是否相等 | eqBy |
大于 | gt |
大于等于 | gte |
小于 | lt |
小于等于 | lte |
限定有序数据类型的范围 | clamp |
求两个数的较大值 | max |
按规则求两个数的较大值 | maxBy |
求两个数的较小值 | min |
按规则求两个数的较小值 | minBy |
求差集:{a∣a∈xs ∩ a∉ys} | difference |
求差集:{a∣a∉xs ∩ a∈ys} | without |
求差集:根据条件计算第一个列表与第二个列表的差集 | differenceWith |
求对称差集:{(xs ∪ ys) - (xs ∩ ys)} | symmetricDifference |
求对称差集:根据条件计算所有不属于两个列表交集的元素 | symmetricDifferenceWith |
求交集:{xs ∩ ys} | intersection |
求交集:从 xs 中挑选出在 ys 中符合条件的元素 | innerJoin |
求并集:{xs ∪ ys} | union |
求并集:根据条件判断两元素是否重复 | unionWith |
数学运算
Action | Function |
---|---|
加 | add |
减 | subtract |
乘 | multiply |
除 | divide |
加1 | inc |
减1 | dec |
取反 | negate |
列表累加和 | sum |
列表累乘积 | product |
列表平均值 | mean |
列表中位数 | median |
取模:算术 | mathMod |
取模:JS | modulo |
类型操作
Action | Function |
---|---|
类型判断 | is |
类型描述 | type |
属性类型判断 | propIs |
判断是否为 null 或 undefined |
isNil |
参考资料
关于 Applicative Functor
,及其操作符 R.ap (haskell 中的 <*>
) 和 lift (haskell 中的 <$>
) 的论述可参考下列资料:
- 《Learn You A Haskell For Great Good》的 Applicative 章节,函数
(->) r
也是 Applicative,需要深入理解。
1 | Function :: ((->) r) |
-
stackoverflow: function as Functor/Applicative Functor/Monad: