Ramda:最后传递谓词平等参数

时间:2017-11-09 14:24:41

标签: ramda.js

我有一个静态的集合。我希望每次都按值检查任何匹配,值会改变。

现在我有:

var isOk = R.any(item => item.test(value), items);

我想要的是什么:

将功能存储在其他地方并将其称为:

var isOk = checkMatch(value);

有什么想法吗? THX。

更新 我正在寻找Ramda方式的解决方案。有关changind的东西调用R .__

的顺序

2 个答案:

答案 0 :(得分:2)

将其包裹在一个需要value的封闭中。

var isOk = (value) => R.any(item => item.test(value), items);

var isOk_foobar = isOk('foobar');

答案 1 :(得分:1)

我不确定您的测试项目是否可以使用正则表达式 字符串,但如果是,你可以尝试这样的事情:

const anyMatch = curry((regexes, val) => any(regex => test(regex, val), regexes))

const testFiles = anyMatch([/test\/(.)+\.js/i, /\.spec\.js/i])

testFiles('foo.js') //=> false
testFiles('test/foo.js') //=> true
testFiles('foo.spec.js') //=> true

这看起来很干净,而且非常符合Ramda的精神。如果你想让它无点,你可以这样做:

const anyMatch = useWith(flip(any), [identity, flip(test)])

但我觉得可读性要低得多。对我而言,无点是一种值得使用的工具,当它提高了可读性时,并避免它什么时候没有。

您可以在 Ramda REPL 上看到这一点。