Ramda 基本的数据结构都是原生 JavaScript 对象,咱们经常使用的集合是 JavaScript 的数组。Ramda 还保留了许多其余原生 JavaScript 特性,例如,函数是具备属性的对象。javascript
今天我来讲说javascript函数式的方法库--Ramda。Ramda主要特性以下:java
Ramda的api很是的实用且中文文档更新迅速,相信使用过Ramda的童鞋都已经喜欢这个库了。这里感谢Ramda中文文档的维护者王增迪先生,这个推荐王增迪先生的QQ讨论群 114706031,欢迎你们在此群讨论一切与函数式编程相关的问题。编程
Ramda的安装这里就很少说,文档很详细。下面以R.equals()、R.zip()和R.useWith()方法来打来Ramda的大门。api
R.equals(5,5) // => true 函数多参比较 R.equals(5)(5) // => true 柯里化支持函数单参比较 R.equals(4)('8') // => false R.equals([])([]) // => true 支持对象对
经过一个函数就能够优雅的判断对象是否相等,省去了繁琐的对象对比;数组
R.zip([1,2])(['a','b']) // => [[1,'a'],[2,'b']] 长度为2 R.zip([1,2,3])(['a','b']) // => [[1,'a'],[2,'b']] 长度为2,由于两个数组较短的那个长度为2
对于常常操纵数组的人来讲,这是一个经常使用且实用的小方法,让咱们避开了显式的使用循环对代码形成的不整洁。数据结构
let square = x => x * x; let result = R.useWith(R.add,[square,square]); result(3,4); // => 25
Ramda的做者几乎整理了全部好用的小方法便于咱们计算。
我这里只是扔个转头,相信你们已经在脑海里有了初步的认识,而且已经意识到本身的代码的某些地方是否是应该作一些修改。函数式编程
其实我想说的就这个多,函数式编程和Ramda当然有不少优势,对于常常操字符串、数组、对象和方法的代码来讲,能够减小代码量,让代码整齐划一,对于方法库的编写也是同样。可是对于不多字符串、数组、对象和方法的代码来讲,使用这些有刻意增长代码难度的嫌疑。因此权衡使用函数式编程。函数
原创博客:转载请注明从函数式编程到Ramda函数库(二)spa