gpt4 book ai didi

javascript - lambda : Extract flat array of uniq values

转载 作者:行者123 更新时间:2023-11-30 20:20:27 25 4
gpt4 key购买 nike

我确实有一个像下面这样的工作代码,但我想知道 Ramda 是否有办法将整个表达式转换为柯里化(Currying)函数,我可以在其中指定输入数据参数。甚至可能以不同的方式组成整个事物。

const data = [
{ val: ['A', 'B'] },
{ val: ['C', 'D'] },
{ val: ['A', 'C', 'E'] },
]

R.uniq(R.flatten(R.map(R.prop('val'), data)))

我尝试使用 R.__,但它的工作方式可能不同,不适用于此类嵌套调用。

最佳答案

这是使用 compose 对您的函数进行的简单转换:

const {compose, uniq, flatten, map, prop} = R;

const data = [
{ val: ['A', 'B'] },
{ val: ['C', 'D'] },
{ val: ['A', 'C', 'E'] },
]

const extract = compose(uniq, flatten, map(prop('val')))

console.log(extract(data))
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.js"></script>

这也可以用 Ramda 的 composepipe 的逆序双胞胎来写:

const {pipe, uniq, flatten, map, prop} = R;

const data = [
{ val: ['A', 'B'] },
{ val: ['C', 'D'] },
{ val: ['A', 'C', 'E'] },
]

const extract = pipe(
map(prop('val')),
flatten,
uniq
)

console.log(extract(data))
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.js"></script>

我个人选择 compose 用于单行代码,pipe 用于更长的代码。

在这两个函数中表达的函数组合的概念是 Ramda 的核心。 (免责声明:我是 Ramda 作者。)

关于javascript - lambda : Extract flat array of uniq values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51503682/

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