2014-09-24 37 views
5

Utworzyłem ten fragment za pomocą ramda, aby sprawdzić, czy jakakolwiek wartość tablicy A istnieje w tablicy B, zakładając, że są to płaskie tablice.Czy mogę to lepiej z curry?

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))); 

Co mi się nie podoba to, że sztywnobeta wewnątrz valueOfArrayInArray. Czy można to zrobić inaczej, aby tak nie było? Proszę zauważyć, że nie szukam zupełnie innej implementacji, która ma taki sam efekt, ale po prostu lepiej zrozumieć, jak w tym przypadku lepiej się kurować.

Odpowiedz

6

Można częściowo stosuje contains od prawej:

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

Albo przerzucić go:

var valueOfArrayInArray = R.map(R.flip(R.contains)(beta)) 
+0

Znakomity, bardzo dziękuję! – rollingBalls

0

Korzystając oprawa:

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))); 
+0

Dziękujemy za odpowiedź! To działające rozwiązanie, ale systemy @elclanrs są bardziej "funkcjonalne", dlatego staram się mówić płynnie, więc akceptuję jego. – rollingBalls