kk常用ramda函数总结
来源:互联网 发布:淘宝上怎样推广宝贝 编辑:程序博客网 时间:2024/05/29 18:28
持续更新。。。
参考了ramda官网和阮一峰老师的Ramda 函数库参考教程。
equals:比较两个值是否相等(支持对象的比较)
R.equals(1, 1); //=> trueR.equals(1, '1'); //=> falseR.equals([1, 2, 3], [1, 2, 3]); //=> truevar a = {}; a.v = a;var b = {}; b.v = b;R.equals(a, b); //=> true
either:接受两个函数作为参数,只要有一个返回true,就返回true,否则返回false。相当于||运算。
var gt10 = x => x > 10;var even = x => x % 2 === 0;var f = R.either(gt10, even);f(101); //=> truef(8); //=> true
both:接受两个函数作为参数,只有它们都返回true,才返回true,否则返回false,相当于&&运算。
var gt10 = R.gt(R.__, 10)var lt20 = R.lt(R.__, 20)var f = R.both(gt10, lt20);f(15); //=> truef(30); //=> false
allPass:接受一个函数数组作为参数,只有它们都返回true,才返回true,否则返回false。
var isQueen = R.propEq('rank', 'Q');var isSpade = R.propEq('suit', '♠︎');var isQueenOfSpades = R.allPass([isQueen, isSpade]);isQueenOfSpades({rank: 'Q', suit: '♣︎'}); //=> falseisQueenOfSpades({rank: 'Q', suit: '♠︎'}); //=> true
test:判断一个字符串是否匹配给定的正则表达式。
R.test(/^x/, 'xyz'); //=> trueR.test(/^y/, 'xyz'); //=> false
数组
contains:如果包含某个成员,返回true(类似于es6中的Array.includes)。
all:所有成员都满足指定函数时,返回true,否则返回false(类似于es5的Array.every)。
any:只要有一个成员满足条件,返回true(类似于es5中的some)。
none:没有成员满足时,返回true。
head:返回数组或者字符串的第一个成员,空数组会返回undefined。
R.head(['fi', 'fo', 'fum']); //=> 'fi'R.head([]); //=> undefinedR.head('abc'); //=> 'a'R.head(''); //=> ''
last
filter:过滤出符合条件的成员(类似于es5的Array.filter)。
without:返回指定值以外的成员。
R.without([1, 2])([1, 2, 1, 3, 4])//=> [3, 4]
sortWith:按照给定的一组函数,进行多重排序。
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]
groupBy:Splits a list into sub-lists stored in an object, based on the result of calling a String-returning function on each element, and grouping the results according to values returned.
把一个数组按照函数返回的结果分成多个数组存在一个对象中,该函数返回值为字符串。
var byGrade = R.groupBy(function(student) { var score = student.score; return score < 65 ? 'F' : score < 70 ? 'D' : score < 80 ? 'C' : score < 90 ? 'B' : 'A';});var students = [{name: 'Abby', score: 84}, {name: 'Eddy', score: 58}, // ... {name: 'Jack', score: 69}];byGrade(students);// {// 'A': [{name: 'Dianne', score: 99}],// 'B': [{name: 'Abby', score: 84}]// // ...,// 'F': [{name: 'Eddy', score: 58}]// }
zip:将两个数组指定位置的成员放在一起,生成一个新数组。
R.zip([1, 2, 3])(['a', 'b', 'c'])//=> [[1, 'a'], [2, 'b'], [3, 'c']]
zipObj:将两个数组指定位置的成员分别作为键名和键值,生成一个新对象。
R.zipObj(['a', 'b', 'c'])([1, 2, 3])//=> {a: 1, b: 2, c: 3}
findIndex:返回符合指定条件的成员的位置(类似es6中的Array.findIndex)。
mergeAll:将数组的成员合并成一个对象。
R.mergeAll([{foo:1},{bar:2},{baz:3}])//=> {foo:1,bar:2,baz:3}R.mergeAll([{foo:1},{foo:2},{bar:2}])//=> {foo:2, bar:2}
对象
has:返回一个布尔值,表示对象自身是否具有该属性。
hasIn:返回一个布尔值,表示对象自身或原型链上是否具有某个属性。
where:如果各个属性都符合指定条件,返回true。
var pred = R.where({ a: R.equals('foo'), b: R.complement(R.equals('bar')), x: R.gt(__, 10), y: R.lt(__, 20)});pred({a: 'foo', b: 'xxx', x: 11, y: 19}) //=> truepred({a: 'xxx', b: 'xxx', x: 11, y: 19}) //=> falsepred({a: 'foo', b: 'bar', x: 11, y: 19}) //=> falsepred({a: 'foo', b: 'xxx', x: 10, y: 19}) //=> falsepred({a: 'foo', b: 'xxx', x: 11, y: 20}) //=> false
omit:过滤指定属性。
R.omit(['a', 'd'])({a: 1, b: 2, c: 3, d: 4})//=> {b: 2, c: 3}
- kk常用ramda函数总结
- 实战函数式编程:使用Ramda.js
- kk常用vim指令
- Ramda 函数库
- kk
- kk
- kk
- kk
- kk
- kk
- KK
- kk
- kk
- KK
- kk
- kk
- asp常用函数总结
- php常用函数总结
- 用画图工具获取屏幕任意点颜色值
- 实现stick footer布局
- springboot 跳转页面时报406错误
- ng-grid
- 百度地图接口及使用
- kk常用ramda函数总结
- 字节序
- list,string,tuple,dictionary之间的转换
- (1)创建一个Customer ,名字叫 Jane Smith, 他有一个账号为1000,余额为2000元,年利率为 1.23% 的账户。 (2)对Jane Smith操作。 存入 100 元,再
- 基于“云计算”技术的电子政务平台
- 关于计算机的笔记
- 武汉紫信科技实习小项目
- 原生js实现div随鼠标移动效果
- SQL実行用