javascript - "Alter"列表头,然后继续处理列表?

标签 javascript functional-programming ramda.js

没有掌握对此的功能解决方案。我专门与 ramda.js 合作,但我相信这个问题适用于任何函数式语言。

希望返回一个新列表,其头部是现有头部的修改副本,然后在进行替换后映射整个列表。在映射列表时,我想为列表的头部做特殊/额外的逻辑。

这是一个伪代码:

R.compose(
  R.map(mapsValuesToDOMNodes), // <-- ex. returns radio buttons, with the first one
                               //         selected, from previous "isFirst" prop
  // <-- ??? "modify" the head of the list; ex., add "isFirst" prop
  R.sortBy(aPropInEachValue),
  R.values
)(myObj);

注意:我希望寻找与语言无关的解决方案,并且我想了解解决此问题的函数式方法。

最佳答案

我不确定 rambda.js,但在功能上我认为这个概念是提取头部和尾部 (uncons),然后应用一个函数到头部并将其 cons 到映射的尾部。

在 Haskell 中,类似于:

applyFirstAndMap :: (a -> b) -> (a -> b) -> [a] -> [b]
applyFirstAndMap _  _   []     = []
applyFirstAndMap fx fxs (x:xs) = fx x:map fxs xs

然后:

applyFirstAndMap (+ 1) (+ 2) [1,2,3] == [2,4,5]

关于javascript - "Alter"列表头,然后继续处理列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37169390/

相关文章:

javascript - 在javascript中查找数组中的数组

javascript - CSS:分辨率问题

javascript - 如何提高JS函数式代码的性能

javascript - 在 React Native 中创建一个 Theme Provider 组件

JavaScript addEventListener 'click' '

java - 如何使用 lambda 表达式创建 'getter'

java - 在 Java 8 中实现 Monad

javascript - 函数式 Ramda 传递函数参数超出范围

typescript - 使用 Typescript、Ramda 和 "prop"进行验证

javascript - Ramda 两者都否定