Ramda:提取唯一值的平面数组
Ramda: Extract flat array of uniq values
我确实有一个像下面这样的工作代码,但我想知道 Ramda 是否有办法将整个表达式转换为柯里化函数,我可以在其中指定输入数据参数。甚至可能以不同的方式组成整个事物。
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>
这也可以用 compose
、pipe
:
的 Ramda 的逆序双胞胎来写
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 作者。)
我确实有一个像下面这样的工作代码,但我想知道 Ramda 是否有办法将整个表达式转换为柯里化函数,我可以在其中指定输入数据参数。甚至可能以不同的方式组成整个事物。
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>
这也可以用 compose
、pipe
:
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 作者。)