gpt4 book ai didi

javascript - JavaScript/Ramda 中与 Clojure 的 juxt 等效的函数

转载 作者:行者123 更新时间:2023-11-30 12:12:33 24 4
gpt4 key购买 nike

我需要 JavaScript 中 Clojure 的 juxt 函数的功能。有这个的 native 功能吗?我们正在使用 Ramda functional JavaScript library .是否有具有 juxt 功能的 Ramda 函数?

我知道,我当然可以自己写这个功能。这是出于教育目的。

最佳答案

有几种方法可以实现这一点。

R.converge ,它通过提供的列表中的每个函数传递给定值,然后将每个函数的结果用作作为第一个参数提供给 converge 的函数的相应参数位置 - 也许用图表更好地解释:

add  = (a, b) => a + b
incr = a => a + 1
decr = a => a - a
double = converge(add, [incr, decr])

------ ---
5 ----| incr |- 6 -| a |
\ ------ | d |- 10
\-| decr |- 4 -| d |
------ ---

这可以用来模拟类似于 juxt 的东西,如下所示:

var argsId = R.unapply(R.identity);
var juxt = R.converge(argsId);
var addSubtract10 = juxt([R.add(10), R.subtract(10)]);
addSubtract10(5); //=> [15, 5]

或者(虽然可能不太直观),R.commute也可以用于函数列表。 R.commute 获取一些应用类型的列表,并有效地将其内部翻转成为某些列表的应用,其中 Ramda 现在提供的函数的应用行为类似于 converge.

var juxt = R.commute(R.always);
var addSubtract10 = juxt([R.add(10), R.subtract(10)]);
addSubtract10(5); //=> [15, 5]

关于javascript - JavaScript/Ramda 中与 Clojure 的 juxt 等效的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33361341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com