问题标签 [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 - 使用 Ramda 从具有多个操作的值创建 JavaScript 对象
我将如何最好地在Ramda中创建此功能?
目的是保持函数调用风格并以最简单的方式指定(和加入)操作。
javascript - Ramda Js:使用来自同一对象的值设置对象的属性
使用 Ramda Js,我需要创建一个函数,该函数可以使用同一对象上不同属性的值来设置一个对象属性。到目前为止,我的尝试如下:
期望的结果:
实际结果:
显然我在这里误解了一些东西,任何关于如何解决这个问题的见解都将不胜感激。
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
javascript - 由多个 groupBy 函数嵌套的对象组数组
我尝试groupByMult
使用Ramda编写一个函数,将多个groupBy函数应用于groupBys
对象数组input
:
它应该返回一个嵌套对象,该对象的子属性为groupBys[0]
,孙子属性为groupBys[1]
,孙子孙子属性为groupBys[2]
,等等。最后一个大子属性具有一个属于该组路径的对象数组作为值(参见expected
底部的输出)。
我用一个例子解释了所需的行为:
我的输入是一个对象数组。在此示例中,所有对象都有一个属性g1
和。g2
g3
在我的示例中,我的组函数是:
我groupByMult
这样打电话
我希望output
深深地平等expected
:
output
or 分别expected
具有 的子属性g1a
,g1b
等groupBys[0]
, 孙子属性g2a
,g2b
等groupBys[1]
, 孙子属性Boolean
,Number
或String
,groupBys[2]
具有属于该组路径的对象数组。例如,数组的所有对象output.g1a.g2b.Boolean
看起来都像{ g1: 'g1a', g2: 'g2b', Boolean: <boolean> }
where<boolean>
代表任何布尔值。
我该如何实现groupByMult
以获得所描述的行为?
javascript - Javascript的FilterWithKeys?
在ramda中,我们得到了很多高阶组合器来做实际工作。一个非常方便的是.filter()
实用程序——我们Array.filter()
在 ES6 中得到了这个函数,但是 ramda(我相信还有 lodash)也给了我们过滤对象的能力。对我来说,我想要一个工具来同时过滤键和值。
ES6 中的const
关键字是一个非常强大的工具 - 通过将它与任意(非对象)值一起使用,我们可以保证该值在块的其余部分永远不会改变(并帮助我们推断错误,许多其他非常不错的收获)。从对象中过滤键和值的唯一其他实用方法是 using for .. in
,它会强制您使用可变变量:
我认为使用filterWithKey
可以缓解这个问题:
在流行的 javascript 库中有类似的东西吗?我还没有在 ramda 或 lodash 中看到过类似的东西,我不知道还能去哪里看。我认为这将是一个合适的实现:
它仍然需要重建对象的行为。有更好的解决方案吗?
javascript - 使用 compose 有什么好处?
我正在学习使用 Ramda 并且遇到了compose。但我无法理解它的目的
纯粹是为了允许currying吗?也许...
有没有其他目的?
ramda.js - 为什么 Ramdajs.filter() 在我的代码中有效而 Ramdajs.find() 无效?
我有一个像
所以,现在我需要在给定“标签”值的情况下提取给定的内部对象
我发现工作:
但 find() 不起作用:
有人可以启发我吗?
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.filter
and提出的无点 Ramda 代码R.map
(按预期工作):
我的问题是 - 我将如何重写上述算法的以下本机版本以使用无点 Ramda.js?
我试过用R.scan
,看着使用R.reduced
,R.when
但我担心我可能会错过一点点。
为了您的方便,我在 Ramda REPL 中包含了以下代码:http: //goo.gl/6hBi5k
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?