2015-07-19 68 views
2

我想在列表page返回最大的要素獲得列表中的最大項:使用ramda

page = [1,2,3]; 
R.max(page); // returns a function. 
R.max(-Infinity, page); // seems correct but doesn't work as expected. 
+0

由於Javascript的標籤是'Math.min.apply(this,[1,2,3])' – vinayakj

+0

請注意,您的標題與您的問題相矛盾 - 您是否想要最小或最大的項目?我回答了最大的問題,如果你瞭解機制,最小的問題應該很容易。 –

+1

是的,從[0.16](https://github.com/ramda/ramda/issues/1277)開始Ramda的'max'和'min'函數是二進制的,原因在[Issue 1230](https:// github.com/ramda/ramda/issues/1230),並在[PR 1231](https://github.com/ramda/ramda/issues/1230)中實施。 @FrédéricHamidi的答案可能是最簡單的方法。如果你經常需要它,顯然你可以爲它創建一個獨立的函數。 –

回答

10

我沒有安裝ramda包,所以這是未經測試,但是從文檔max()只需要兩個參數,所以你會在它不得不您的數組:

var page = [1, 2, 3], 
    result = R.reduce(R.max, -Infinity, page); 
// 'result' should be 3. 
+0

是的,就是這樣:http://bit.ly/1Mezsnw –

-1

爲了使用Ramda功能MAX可以使用傳播接線員給數組中的最大值」 ... 「

R.max(...page) 
+0

哇,好吧,我正式混淆了。爲什麼這甚至會起作用? – Jim

+0

看看擴展運算符的定義 - >允許從一個可迭代的表達式(例如另一個數組文本)初始化一個數組文本的部分,或允許將一個表達式擴展爲多個參數(在函數調用中) – servatj

+0

這不工作。如果我用[1,2,3]嘗試,我得到2而不是3.這是因爲'R.max'是一個二元函數,所以'R.max(... page)'=>'R. max(1,2)' –