2015-07-19 62 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)' –