Antwort an „ebody“ verfassen

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

freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen