5

我制作了这个片段,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)));

我不喜欢的是里面的硬编码 。它可以以不同的方式完成吗?请注意,我不是在寻找具有相同效果的完全不同的实现,而只是为了在这种情况下更好地理解柯里化。betavalueOfArrayInArray

4

2 回答 2

6

contains您可以从右侧部分申请:

var valueOfArrayInArray = R.map(R.rPartial(R.contains, beta))

或者翻转它:

var valueOfArrayInArray = R.map(R.flip(R.contains)(beta))
于 2014-09-24T19:20:30.233 回答
0

使用绑定:

var hasAtLeastOneTruthValue = ramda.contains(true);

var alpha = [1,2,3]
var beta = [4,1,7];

function finder(lookup,a_v){
    return ramda.contains(a_v, lookup);
}

var valueOfArrayInArray = ramda.map(finder.bind(null,beta));

console.log(hasAtLeastOneTruthValue(valueOfArrayInArray(alpha)));
于 2014-09-24T19:24:37.893 回答