2015-07-19 1 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 (это, [1,2,3])' – vinayakj

+0

Обратите внимание, что название противоречит ваш вопрос - вы хотите, наименьший или наибольший элемент? Я ответил за самый большой предмет, получив наименьший из них, должен быть легким, если вы понимаете механику. –

+1

Да, с [0.16] (https://github.com/ramda/ramda/issues/1277) Функции 'max' и' min' от Ramda являются двоичными по причинам, описанным в [Выпуск 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) ' –

Смежные вопросы