繁体   English   中英

Ramda-过滤对象数组-咖喱FN参数顺序

[英]Ramda - filtering array of objects - curried fn parameters order

我想在ramda.js中实现过滤函数生成器。 在我看来,它应该这样运行:

var a = filterFn(arrOfObjects)
var b = a(keyName)
var c = b(value)

实现此顺序的参数非常重要,因为可以使用不同的条件过滤同一数组。

目前,我有以下代码:

var g = R.curryN(2, R.compose(R.filter(R.__)(R.__), R.propEq))
g('classId')(2)(input)

但我想将“输入”作为第一个参数:

g(input)('classId')(1)

这是一个ramda REPL: 代码

提前致谢!

我只会用这样的东西:

R.curry((list, name, value) => R.filter(R.propEq(name, value), list));

Ramda不包括任意的参数重新排序机制,仅包含flip__占位符

您实际上并不希望此功能没有意义:)

var g = R.compose(
  R.curryN(2, R.compose)(R.__, R.propEq),
  R.curryN(2, R.compose),
  R.flip(R.filter)
)

或者至少确保未来的维护者永远不会知道您的住所:)

如何获得像这样的可怕的东西。

首先,编写功能明确的版本。

list => prop => value => R.filter(R.propEq(prop)(value))(list)

要么

list => prop => value = R.flip(R.filter)(list)(R.propEq(prop)(value))

然后转到Pointfree.io并使用一些haskell语法\\xyz -> fx (gyz) 其中f如果flip filtergpropEq

工具将产生(. g) . (.) . f (. g) . (.) . f

然后,将其转换回javascript,以使将来的维护人员哭泣。 演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM