Если это упражнение по написанию бессмысленного кода, то решение, подобное решению @JeffreyWesterkamp, подойдет.
Однако для производственного кода любое бессмысленное решение будет много менее читабельно, чем эта простая версия:
const process = ({top, bottom, rate}) => ((2 * bottom) - (10 + top)) * rate;
const myNumbers = [
{ top: 10, bottom: 5, rate: 5 },
{ top: 9, bottom: 4, rate: 3 },
];
console.log(R.map(process, myNumbers));
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.js"></script>
Смысл в том, чтобы не делать фетиш более бесполезным.Это инструмент, который иногда делает код легче для чтения, легче для понимания.Но это не стоит использовать, если это не так.
Не поймите меня неправильно.Я большой поклонник бессмысленного кода, и у Рамды (отказ от ответственности: я один из его авторов) есть несколько полезных инструментов, которые помогут вам написать его.Но Рамда отлично работает с другим кодом.Так что используйте это с умом.
Еще один момент (гм): Рамда предоставляет две довольно необычные функции, useWith
и converge
, чтобы упростить написание кода без точек.Но converge
часто можно заменить на более стандартный lift
.Его не всегда можно заменить, поскольку у него есть некоторые функции для работы с переменными функциями, которые lift
не предоставляет, но когда вы можете использовать lift
, я бы посоветовал вам это сделать.Например, вместо
converge(subtract, [prop('bottom'), prop('top')])
вы могли бы написать
lift(subtract)(prop('bottom'), prop('top'))
Нет стандартной замены для useWith
, о которой я знаю.Но я бы по возможности заменил converge
на lift
.