[英]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: 代码
提前致谢!
您实际上并不希望此功能没有意义:)
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 filter
和g
是propEq
工具将产生(. g) . (.) . f
(. g) . (.) . f
然后,将其转换回javascript,以使将来的维护人员哭泣。 演示
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.