没有掌握对此的功能解决方案。我专门与 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/