问题标签 [ramda.js]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - `lt`、`lte`、`gt` 和 `gte` 的翻转版本的好名字?
我已经在一个名为Ramda的 Javascript FP 库上工作了一段时间,但我在命名事物时遇到了一些小问题。(你听过那句老话,对吧?“计算机科学中只有两个难题:缓存失效、命名和非一个错误。”)
在这个库中,(几乎)每个具有多个参数的函数都会自动进行柯里化。这适用于大多数用例。但是一些非交换二元运算符的函数存在一些问题。问题在于,英文名称往往暗示的含义与应用 currying 时发生的情况不同。例如,
听上去应该是一个把参数除以10的函数。但实际上它把它的参数除以10,看定义就很清楚了:
所以改为预期的:
事实上,你得到
我们通过记录与人们可能期望的差异并创建divideBy
, which is justflip(divide)
和subtractN
, which is 来处理这个问题flip(subtract)
。但是我们还没有找到一个很好的等价函数,例如lt
:
或其表亲lte
, gt
, 和gte
.
我自己的直觉是
但当然,它实际上返回
所以我想为它的同类做同样的文档和点到备用名称例程lt
。但是一直找不到好名字。唯一真正的候选人是ltVal
,并且在使用两个参数调用时都不起作用。我们确实讨论了这个问题,但没有很好的结论。
其他人是否处理过这个问题并提出了好的解决方案?或者即使没有,对于这些功能的翻转版本的名称有什么好的建议吗?
更新
有人建议将其关闭,因为“不清楚你在问什么”,我想这个问题在解释中确实有点丢失了。简单的问题是:
什么是翻转版本的好,直观的名称lt
?
typescript - 具有属性的函数的打字稿定义
我正在为 ramda 编写一个 d.ts 文件。该库有一个功能mapObj
和mapObj.idx
.
我的问题是如何添加具有类似 def 类型的 mapObj.idx?我知道answer,但这需要一个单独的界面,我想避免这种情况。
javascript - 在 JavaScript 中将方法用作(咖喱)函数
将方法转换为 curried 函数的最优雅的方法是什么,在 Underscore/Lo-dash 或 Ramda 等库中是否支持此功能?
对于固定数量的参数,我现在正在这样做:
它允许如下代码:
也:
javascript - 我可以咖喱这个更好吗?
我制作了这个片段,ramda
用于检查数组 B 中是否存在数组 A 的任何值,假设它们是平面数组。
我不喜欢的是里面的硬编码 。它可以以不同的方式完成吗?请注意,我不是在寻找具有相同效果的完全不同的实现,而只是为了在这种情况下更好地理解柯里化。beta
valueOfArrayInArray
javascript - 使用多个谓词进行过滤,优雅的函数式方法
我正在尝试在我的应用程序中实现过滤逻辑。有一个表格,每个列标题都包含一个输入字段和带有过滤器选项的下拉列表,您可以通过选择一个选项来设置过滤器,例如“等于”、“不等于”、“开始于”、“包含”、“不”包含”、“结束于”等(选项会因不同类型的数据而变化)。类似于KendoUI 网格的东西
现在我无法理解的是如何创建一个函数,通过使用选定过滤器的谓词来过滤数据数组(可以设置多个过滤器)
我刚开始使用ramda.js,我认为这个项目真的很棒。我想我可以使用它或 lodash/underscore (虽然我更喜欢 ramda)
如果有人可以给我看一个片段,一些开始的东西 - 我将非常感激
javascript - 我可以让这个功能定义更短吗?
我正在尝试在我的 javascript 应用程序中更多地转向函数式编程。我目前使用库ramda作为基础库。
我的愿望:
- 创建一个函数,该函数
findWithId(id, list)
返回列表中具有与_id
输入 id 匹配的属性的项目。 - 使其实现尽可能短,尽可能依赖现有代码。
迄今为止取得的成绩:
我的基础是R.find
具有这种定义
的
find :: (a -> Boolean) -> [a] -> a | undefined
我尝试了一些不同的解决方案,如下所示:
问题
我可以像使用标准函数式编程工具(如 compose、curry 等)findWithId_v2
一样缩短吗?findWithId_v1
Plunker 演示
javascript - 基于嵌套属性值删除列表中项目的功能方法
我正在尝试在我的 javascript 应用程序中更多地转向函数式编程。我目前使用库 ramda 作为基础库。
我的愿望:
- 创建一个函数 removeUserFromList(username, list),它返回列表中与用户名不匹配的项目。
- 使实现尽可能短,尽可能依赖 Ramda 库中现有的函数。
条件:
包含嵌套用户对象的列表:
迄今为止取得的成绩:
Plunkr 演示:
http://plnkr.co/edit/1b5FjxV3Tcgz7kozW1jX
问题:
有没有更适合的函数来实现类似于 R.eq 但在嵌套对象(可能是 R.pathEq)上的东西?
javascript - 自然排序、对象数组、多列、反向等
我迫切需要实现客户端排序,模拟通过我们的 sweetpie api 进行排序,它可以获取多个字段并返回排序数据。因此,例如,如果我有如下数据:
并给定列进行排序,例如:['name', '-number_of_reqs']
它应该按name
(升序)和number_of_reqs
(降序)排序。我无法理解这一点,首先它必须是“自然排序”,如果我们谈论对单个列进行排序,它应该很容易得到,但我需要能够排序多。
另外我不确定为什么在使用 lodash's 时会得到不同的结果(从 api 的方式)_.sortBy
?不是_.sortBy
“自然”还是我们的api坏了?
我也在寻找一个优雅的解决方案。最近才开始使用Ramdajs,真是太棒了。我敢打赌,使用它来构建我需要的排序会更容易吗?我试过了,还是不能正确。一点帮助?
更新:
我发现了这个并将它与 Ramda 一起使用,如下所示:
似乎适用于平面数组,但我仍然需要找到一种方法将它应用于我的数组中的多个字段
javascript - 为什么在返回另一个函数调用之前对未知参数调用 void?
void
在ramda 的 arity 函数中返回之前调用有什么意义?
javascript - 是否有将 SqlResultsetRowList 转换为数组的首选方法?
当我在 Ramda 中尝试这个时,我得到一个非法调用异常:
我可以用两行来完成,但它似乎更像是一个 hack:
完成此任务的首选方法是什么?我应该坚持使用循环吗?