1unitedpower: Javascript includes einzelne Array Werte

Beitrag lesen

problematische Seite

Mich persönlich würde jetzt noch triggern, dass die beiden Funktionen sich lediglich darin unterscheiden, ob sie mit some oder every suchen, und ich würde das vermutlich noch abstrahieren. Und in ein Objekt kapseln. Das wird dann aber schwerer verständlich. Aussehen täte es so:

Deine Grundidee mit some und every zu arbeiten gefällt mir besser als meine erste Eingebung mit der Schnittmenge. Ich glaube deinen Ansatz kann man noch noch stark vereinfachen. Ich würde bspw. auf die Überladung verzichten und den dynamischen Array-Test rausnehmen. Dadruch verliert man nichts, weil man die Funktion ja immernoch mit f([arg1, arg2,]) anstatt f(arg1, arg2) aufrufen kann. Außerdem würde ich nicht über den Quantor abstrahieren, sondern einen Abschluss (Closure) über das gemeinsame Prädikat bilden. Dann bleibt folgendes ürbig:


function all(genresToFind) {
  return movie => genresToFind.every(isIncludedIn(movie.genres))
}

function some(genresToFind) {
  return movie => genresToFind.some(isIncludedIn(movie.genres))
}

function isIncludedIn (movieGenres) {
  return genre => movieGenres.includes(genre)
}