问题标签 [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.

0 投票
2 回答
4867 浏览

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

0 投票
1 回答
422 浏览

typescript - 具有属性的函数的打字稿定义

我正在为 ramda 编写一个 d.ts 文件。该库有一个功能mapObjmapObj.idx.

我的问题是如何添加具有类似 def 类型的 mapObj.idx?我知道answer,但这需要一个单独的界面,我想避免这种情况。

0 投票
1 回答
764 浏览

javascript - 在 JavaScript 中将方法用作(咖喱)函数

将方法转换为 curried 函数的最优雅的方法是什么,在 Underscore/Lo-dash 或 Ramda 等库中是否支持此功能?

对于固定数量的参数,我现在正在这样做:

它允许如下代码:

也:

0 投票
2 回答
278 浏览

javascript - 我可以咖喱这个更好吗?

我制作了这个片段,ramda用于检查数组 B 中是否存在数组 A 的任何值,假设它们是平面数组。

我不喜欢的是里面的硬编码 。它可以以不同的方式完成吗?请注意,我不是在寻找具有相同效果的完全不同的实现,而只是为了在这种情况下更好地理解柯里化。betavalueOfArrayInArray

0 投票
3 回答
4354 浏览

javascript - 使用多个谓词进行过滤,优雅的函数式方法

我正在尝试在我的应用程序中实现过滤逻辑。有一个表格,每个列标题都包含一个输入字段和带有过滤器选项的下拉列表,您可以通过选择一个选项来设置过滤器,例如“等于”、“不等于”、“开始于”、“包含”、“不”包含”、“结束于”等(选项会因不同类型的数据而变化)。类似于KendoUI 网格的东西

现在我无法理解的是如何创建一个函数,通过使用选定过滤器的谓词来过滤数据数组(可以设置多个过滤器)

我刚开始使用ramda.js,我认为这个项目真的很棒。我想我可以使用它或 lodash/underscore (虽然我更喜欢 ramda)

如果有人可以给我看一个片段,一些开始的东西 - 我将非常感激

0 投票
2 回答
267 浏览

javascript - 我可以让这个功能定义更短吗?

我正在尝试在我的 javascript 应用程序中更多地转向函数式编程。我目前使用库ramda作为基础库。

我的愿望:

  1. 创建一个函数,该函数findWithId(id, list)返回列表中具有与_id输入 id 匹配的属性的项目。
  2. 使其实现尽可能短,尽可能依赖现有代码。

迄今为止取得的成绩:

我的基础是R.find具有这种定义 的 find :: (a -> Boolean) -> [a] -> a | undefined 我尝试了一些不同的解决方案,如下所示:

问题

我可以像使用标准函数式编程工具(如 compose、curry 等)findWithId_v2一样缩短吗?findWithId_v1

Plunker 演示

http://plnkr.co/edit/xAYx15yk6lBzutdAL9HC?p=preview

0 投票
3 回答
2129 浏览

javascript - 基于嵌套属性值删除列表中项目的功能方法

我正在尝试在我的 javascript 应用程序中更多地转向函数式编程。我目前使用库 ramda 作为基础库。

我的愿望:

  1. 创建一个函数 removeUserFromList(username, list),它返回列表中与用户名不匹配的项目。
  2. 使实现尽可能短,尽可能依赖 Ramda 库中现有的函数。

条件:

包含嵌套用户对象的列表:

迄今为止取得的成绩:

Plunkr 演示:

http://plnkr.co/edit/1b5FjxV3Tcgz7kozW1jX

问题:

有没有更适合的函数来实现类似于 R.eq 但在嵌套对象(可能是 R.pathEq)上的东西?

0 投票
5 回答
4616 浏览

javascript - 自然排序、对象数组、多列、反向等

我迫切需要实现客户端排序,模拟通过我们的 sweetpie api 进行排序,它可以获取多个字段并返回排序数据。因此,例如,如果我有如下数据:

并给定列进行排序,例如:['name', '-number_of_reqs']它应该按name(升序)和number_of_reqs(降序)排序。我无法理解这一点,首先它必须是“自然排序”,如果我们谈论对单个列进行排序,它应该很容易得到,但我需要能够排序多。

另外我不确定为什么在使用 lodash's 时会得到不同的结果(从 api 的方式)_.sortBy?不是_.sortBy“自然”还是我们的api坏了?

我也在寻找一个优雅的解决方案。最近才开始使用Ramdajs,真是太棒了。我敢打赌,使用它来构建我需要的排序会更容易吗?我试过了,还是不能正确。一点帮助?

更新:

我发现了这个并将它与 Ramda 一起使用,如下所示:

似乎适用于平面数组,但我仍然需要找到一种方法将它应用于我的数组中的多个字段

0 投票
2 回答
73 浏览

javascript - 为什么在返回另一个函数调用之前对未知参数调用 void?

voidramda 的 arity 函数中返回之前调用有什么意义?

0 投票
1 回答
1992 浏览

javascript - 是否有将 SqlResultsetRowList 转换为数组的首选方法?

当我在 Ramda 中尝试这个时,我得到一个非法调用异常:

我可以用两行来完成,但它似乎更像是一个 hack:

完成此任务的首选方法是什么?我应该坚持使用循环吗?