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