我使用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)));
我不喜欢的是beta
内的硬编码 valueOfArrayInArray
。它可以以不同的方式完成,所以它不是吗?请注意,我不是在寻找具有相同效果的完全不同的实现,而只是在这种情况下更好地理解currying。
答案 0 :(得分:6)
您可以从右侧部分应用contains
:
var valueOfArrayInArray = R.map(R.rPartial(R.contains, beta))
或翻转它:
var valueOfArrayInArray = R.map(R.flip(R.contains)(beta))
答案 1 :(得分: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)));