我正在尝试在我的 javascript 应用程序中更多地转向函数式编程。我目前使用库ramda作为基础库。
我的愿望:
- 创建一个函数,该函数
findWithId(id, list)
返回列表中具有与_id
输入 id 匹配的属性的项目。 - 使其实现尽可能短,尽可能依赖现有代码。
迄今为止取得的成绩:
我的基础是R.find
具有这种定义
的
find :: (a -> Boolean) -> [a] -> a | undefined
我尝试了一些不同的解决方案,如下所示:
//Using ramdajs (ramdajs.com)
var hasId = R.curry(function(id, item) {
return item._id === id
});
//This doesn't work
var findWithId_v1 = R.find(hasId);
//This works but can I make it as short as v1?
var findWithId_v2 = function(id, list) {
return R.find(hasId(id), list);
}
问题
我可以像使用标准函数式编程工具(如 compose、curry 等)findWithId_v2
一样缩短吗?findWithId_v1