ebody: Javascript includes einzelne Array Werte

Beitrag lesen

problematische Seite

Hi Rolf,

anhand deiner Lösung habe ich hier einen fertigen Code erstellen können. Ist etwas abgeändert.

Vielen Dank an alle!

/** Array mit Filmen  */
const arrMovies = [
  {
    Titel: 'Prometheus',
    Genre: 'Science-Fiction,Fantasy',
    Tags: 'Favorit,Weltall'
  },
  {
    Titel: 'Arrival',
    Genre: 'Science-Fiction,Fantasy',
    Tags: 'Weltall'
  },
  {
    Titel: 'Pirates of the Caribbean Salazars Rache',
    Genre: 'Abenteuer,Fantasy',
    Tags: 'Piraten,Meer'
  },
  {
    Titel: 'Shutter Island',
    Genre: 'Drama,Thriller',
    Tags: 'Favorit,De Caprio'
  }  
  
];

/** Array mit Filtern */
const arrFilter = {
  Genre: ['Abenteuer','Action','Thriller'],
  Tags: ['New York','Favorit','Top10']
};

/** Gefiltertes Array mit Filmen */
let dataset = [];

/** 
 * Filtern 
 */

/** arrFilter[] wird durchlaufen */
for(let filterWord in arrFilter){
  
  /** 
   * Wenn ein Wert wie z.B. "Abenteuer" aus arrFilter[filterWord] (z.B. arrFilter['Genre']) in einem der Elemente aus arrMovies['Genre'] enthalten ist, speicher diesen Datensatz im Array filterCheck 
   * arrFilter['Genre']['Abenteuer','Action','Thriller'] würde mit dieser einen Zeile zwei Elemente aus arrMovies[] in filterCheck[] speichern.
   * arrFilter['Tags']['Favorit'] würde mit dieser einen Zeile zwei Elemente aus arrMovies[] in filterCheck[] speichern.
   */
  let filterCheck = arrMovies.filter(movie => arrFilter[filterWord].some(genre => movie[filterWord].includes(genre)));
  
  /** filterCheck[] Elemente enthält */
  if(filterCheck.length){
    /** filterCheck[] durchlaufen */
    for(let filterCheckElement of filterCheck){
      /** Wenn dataset[] das Array Element aus dem Array filterCheck[] nicht enthält */
      if(!dataset.includes(filterCheckElement)){
        /** Füge das Array Element aus dem Array filterCheck[] dem Array dataset[] hinzu */
        dataset.push(filterCheckElement);
      }
    }
  }
  
}

/** Ausgabe des Arrays dataset[], welche alle Datensätze gefiltert aus arrMovies[] enthält */
console.log('dataset final: ', dataset);

Gruß ebody