Der Browser-Speicher localStorage ist nicht verfügbar. Entweder unterstützt dein Browser ihn nicht oder du hast ihn deaktiviert oder er ist voll. Ohne localStorage werden deine Lösungen nicht gespeichert.

Array: filter()

Eine weitere wichtige Array-Methode mit Funktionsparamter ist filter(). Sie filtert aus einem Array alle Elemente heraus, die einen durch die Callback-Funktion implementierten Test bestehen, und gibt diese als neues Array zurück. Die Callback-Funktion muss dabei bei Aufruf mit einem Array-Element entweder true oder false ergeben. Array-Elemente, die true ergeben, landen im gefilterten Array. Das ursprüngliche Array wird wie bei map() nicht verändert.
let numbers = [7, -6, 120, -21, 2];

// [7, 120, 2]
let positiveNumbers = numbers.filter(x => x > 0);

// [-6, -21]
let negativeNumbers = numbers.filter(x => x < 0);

// [-6, 120, 2]
let evenNumbers = numbers.filter(x => x % 2 === 0);
Läßt sich die Filterbedingung wie hier in einem kurzen Ausdruck darstellen, so kann man die Callback-Funktion elegant als Pfeilfunktion übergeben. In komplexeren Fällen ist eine eigenständige Funktion sinnvoll:
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

function isPrime(num) {
   
  if (num < 2) {
    // nicht prim, weil zu klein
    return false;
  }

  for (let i = 2; i < num; i++) {
    if (num % i === 0) {
      // nicht prim, weil teilbar
      return false;
    }
  }
  // prim
  return true;
}

// [2, 3, 5, 7]
const primes = numbers.filter(isPrime);

Aufgabe

Schreibe eine Funktion filterBlau, die ein Array mit Strings entgegennimmt und alle Array-Elemente, die den String 'blau' enthalten, als Array zurückgibt. Groß- und Kleinschreibung soll keine Rolle spielen.

Beispiel: filterBlau(['Korngelb', 'Tannenblau', 'Rosenrot']) sollte ['Tannenblau'] ergeben.
Schreibe zunächst eine Funktion containsBlau(), die einen String entgegennimmt und true zurückgibt, wenn der String 'blau' enhält. Enthält er nicht 'blau', soll false zurückgegeben werden. Groß- und Kleinschreibung soll keine Rolle spielen. Verwende dann die Array-Funktion filter() zusammen mit containsBlau(), um die geforderte Funktion filterBlau() zu schreiben.
function containsBlau(word) {
  return word.toLowerCase().indexOf('blau') >= 0;
}

function filterBlau(words) {
  return words.filter(containsBlau);
}

loving