【发布时间】:2020-03-03 08:47:40
【问题描述】:
我有一个用匿名函数编写的函数,它可以使用对象列表对一组 ID 进行水合,匹配 id 属性。
const objectsList = [{ id: 1, ... }, { id: 2, ... }]
ids.map(id => R.find(R.propEq('id', id), objectsList))
(我知道以这种方式查找对象很愚蠢——效率低下等等——让我们暂时忽略它。)
所以,我想做到这一点,但我被卡住了。这是最好的尝试:
ids.map(R.find(R.propEq('id', R.__), objects))
但这不好。我还尝试翻转参数的顺序并使用 compose,但这并没有产生正确的结果:
ids.map(R.compose(R.flip(R.find)(objects), R.propEq('id')))
这也不是骰子...任何 FP 向导都愿意帮助那些总是试图找出无点编程细微差别的人?
更新
感谢那些回答的人!同意,不应该迷恋无点编程;主要是我要求加深对 FP 和 Ramda 工具的理解。我同意所有发帖者的观点,即不得将无点编程优先于可读性。
通过这次我确实学到了更多关于 Ramda 的知识,希望其他人也能这样做。 :-)
【问题讨论】:
-
“但这不好”你的意思是“它不工作”?
-
@Bergi:不,“这是彻头彻尾的邪恶!” ;-)
标签: functional-programming ramda.js