问题标签 [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 投票
1 回答
170 浏览

javascript - 使用 Ramda 从具有多个操作的值创建 JavaScript 对象

我将如何最好地在Ramda中创建此功能?

目的是保持函数调用风格并以最简单的方式指定(和加入)操作。

0 投票
1 回答
4576 浏览

javascript - 将函数列表应用于 Ramda 中的值

我将如何最好地在Ramda中创建此功能?

我想这是map函数的反函数。

0 投票
3 回答
11944 浏览

javascript - Ramda Js:使用来自同一对象的值设置对象的属性

使用 Ramda Js,我需要创建一个函数,该函数可以使用同一对象上不同属性的值来设置一个对象属性。到目前为止,我的尝试如下:

期望的结果:

实际结果:

显然我在这里误解了一些东西,任何关于如何解决这个问题的见解都将不胜感激。

0 投票
1 回答
40600 浏览

javascript - RxJS Promise 组合(传递数据)

我是 Rx 的新手,我发现很难找到有关撰写承诺的文档,以便将第一个承诺中的数据传递到第二个等等。这是三个非常基本的 Promise,对数据的计算并不重要,只是必须使用前一个 Promise 中的数据进行异步操作。

实现我正在谈论的构图的传统方法:

我最喜欢的实现是 Ramda 的 composeP 和 pipeP:

看起来 Rx 可能能够非常流畅地处理这种情况。但是,到目前为止,我发现的最接近的是从 RxJS 到这里的异步(库)比较https://github.com/Reactive-Extensions/RxJS/blob/master/doc/mapping/async/comparing.md

concatMap 看起来很有希望,但上面的代码看起来非常可怕。我的示例也遇到了问题,因为 Rx.Observable.fromPromise(p1) 无法正常工作,因为它需要一个承诺本身,而不是一个函数,并且 Rx.Observable.defer(p1) 似乎没有传递像例子。

谢谢!

类似的问题,但没有数据传递: Chaining promises with RxJS

0 投票
3 回答
2003 浏览

javascript - 由多个 groupBy 函数嵌套的对象组数组

我尝试groupByMult使用Ramda编写一个函数,将多个groupBy函数应用于groupBys对象数组input

它应该返回一个嵌套对象,该对象的子属性为groupBys[0],孙子属性为groupBys[1],孙子孙子属性为groupBys[2],等等。最后一个大子属性具有一个属于该组路径的对象数组作为值(参见expected底部的输出)。

我用一个例子解释了所需的行为:

我的输入是一个对象数组。在此示例中,所有对象都有一个属性g1和。g2g3

在我的示例中,我的组函数是:

groupByMult这样打电话

我希望output深深地平等expected

outputor 分别expected具有 的子属性g1a,g1bgroupBys[0], 孙子属性g2a,g2bgroupBys[1], 孙子属性Boolean,NumberString,groupBys[2]具有属于该组路径的对象数组。例如,数组的所有对象output.g1a.g2b.Boolean看起来都像{ g1: 'g1a', g2: 'g2b', Boolean: <boolean> }where<boolean>代表任何布尔值。

我该如何实现groupByMult以获得所描述的行为?

0 投票
1 回答
74 浏览

javascript - Javascript的FilterWithKeys?

ramda中,我们得到了很多高阶组合器来做实际工作。一个非常方便的是.filter()实用程序——我们Array.filter()在 ES6 中得到了这个函数,但是 ramda(我相信还有 lodash)也给了我们过滤对象的能力。对我来说,我想要一个工具来同时过滤键和值。

ES6 中的const关键字是一个非常强大的工具 - 通过将它与任意(非对象)值一起使用,我们可以保证该值在块的其余部分永远不会改变(并帮助我们推断错误,许多其他非常不错的收获)。从对象中过滤键和值的唯一其他实用方法是 using for .. in,它会强制您使用可变变量:

我认为使用filterWithKey可以缓解这个问题:

在流行的 javascript 库中有类似的东西吗?我还没有在 ramda 或 lodash 中看到过类似的东西,我不知道还能去哪里看。我认为这将是一个合适的实现:

它仍然需要重建对象的行为。有更好的解决方案吗?

0 投票
2 回答
527 浏览

javascript - 使用 compose 有什么好处?

我正在学习使用 Ramda 并且遇到了compose。但我无法理解它的目的

纯粹是为了允许currying吗?也许...

有没有其他目的?

0 投票
1 回答
98 浏览

ramda.js - 为什么 Ramdajs.filter() 在我的代码中有效而 Ramdajs.find() 无效?

我有一个像

所以,现在我需要在给定“标签”值的情况下提取给定的内部对象

我发现工作:

但 find() 不起作用:

有人可以启发我吗?

0 投票
1 回答
437 浏览

javascript - 将 R.filter 和 R.map 重构为无点风格的 R.reduce

我已经开始学习Ramda.js和函数式编程,并且对使用无点编程风格的函数式组合非常感兴趣,但是我很难理解其中的一些内容,我希望有人可以帮助说明:

假设我有一份人员名单 - 我只想获取 13-19 岁(青少年)之间的人。然后,我想将每个人映射到该人的getName()方法的返回值(如果它存在),或者他们的name属性。然后,我想.toUpperCase()点名。

如果我使用常规的 JS 原型方法,我不会使用Array.prototype.filter来获取青少年用户,然后Array.prototype.map. 出于性能原因,我会使用Array.prototype.reduce,其主体将由一个条件保护,该条件检查每个迭代项目是否符合青少年的标准。这样,我就少了一次迭代。Elijah Manor 在他的博客上有一篇关于此的文章

这是我使用R.filterand提出的无点 Ramda 代码R.map(按预期工作):

我的问题是 - 我将如何重写上述算法的以下本机版本以使用无点 Ramda.js?

我试过用R.scan,看着使用R.reducedR.when但我担心我可能会错过一点点。

为了您的方便,我在 Ramda REPL 中包含了以下代码:http: //goo.gl/6hBi5k

0 投票
2 回答
95 浏览

javascript - Composing a function from an uncurried function

I'm trying to create a curriable function that returns whether or not the supplied length is equal to the length of the supplied string. I'd like it to work like this:

I initially tried this, but the argument order is reversed because it returns the curried equals function:

I can fix by wrapping it in a function like this:

But it seems like there would be a way to use the functional library to solve this. Anyone have any ideas?