我可以更好地咖喱吗?

rol*_*lls 5 javascript functional-programming currying ramda.js

我使用这个片段ramda来检查数组B中是否存在数组A的任何值,假设它们是平面数组.

var hasAtLeastOneTruthValue = ramda.contains(true);
var alpha = [1,2,3]
var beta = [4,1,7];

var valueOfArrayInArray = ramda.map(function(a_v){
    return ramda.contains(a_v, beta);
});

console.log(hasAtLeastOneTruthValue(valueOfArrayInArray(alpha)));
Run Code Online (Sandbox Code Playgroud)

我不喜欢的是内部硬编码 .它可以以不同的方式完成,所以它不是吗?请注意,我不是在寻找具有相同效果的完全不同的实现,而只是在这种情况下更好地理解currying.betavalueOfArrayInArray

elc*_*nrs 6

你可以contains从右边部分申请:

var valueOfArrayInArray = R.map(R.rPartial(R.contains, beta))
Run Code Online (Sandbox Code Playgroud)

或翻转它:

var valueOfArrayInArray = R.map(R.flip(R.contains)(beta))
Run Code Online (Sandbox Code Playgroud)