2016-07-08 48 views
3

有什么办法可以参数化whereEq,所以我可以删除'complete:true'并在调用下面的控制台日志示例中的函数时传递此信息?参数化函数

let incomplete = R.filter(R.whereEq({ complete: false })) 

console.log(incomplete(data)) 

回答

0

R.wrap在这里可以帮到你。

let incomplete = R.wrap(R.filter, function(filter, array, isComplete) { 
    return filter(R.whereEq({ complete: isComplete }), array) 
}) 

incomplete(data, false); 
+0

我从来没有理解'R.wrap'的观点。在这里,我们可以直接引用'R.filter',而不是将'R.filter'提供给'R.wrap'并让'R.wrap'把它给回给我们。我打开了[ramda/ramda#1818](https://github.com/ramda/ramda/pull/1818)来弃用'R.wrap'。 – davidchambers

0

为什么不

let incomplete = (data, bool) => R.filter(R.whereEq({complete: bool}), data); 

(虽然名字 '不完整' 真的不再有意义......)?