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.
Funktionale Programmierung
Bei der funktionalen Programmierung
werden Funktionen nicht nur wie bisher deklariert und aufgerufen, sondern Funktionen werden auch als Parameter
an andere Funktionen übergeben oder Funktionen werden von Funktionen zurückgegeben. Eine Stärke von JavaScript ist es, dass es
ebenso wie objektorientierte auch funktionale Programmierung unterstützt.
In JavaScript sind Funktionen Objekte, die wie alle anderen Objekte Variablen zugeordnet werden können. Deklariert man eine Funktion mit dem Schlüsselwort
Schauen wir uns das Ganze nun am Beispiel der Array-Methode
Eine Funktion, die einer anderen Funktion als Parameter übergeben wird und von dieser dann aufgerufen wird, bezeichnet man in der Informatik als Callback.
In JavaScript sind Funktionen Objekte, die wie alle anderen Objekte Variablen zugeordnet werden können. Deklariert man eine Funktion mit dem Schlüsselwort
function
und anschließendem Funktionsnamen,
so wird automatisch eine Variable mit dem Namen der Funktion erzeugt. Diese Variable enthält als Wert die Funktion.Schauen wir uns das Ganze nun am Beispiel der Array-Methode
map()
(engl.: abbilden) an:
function addOne(x) {
return x + 1;
}
let startNumbers = [1, 2, 3];
let newNumbers = startNumbers.map(addOne);
console.log(startNumbers); // [1, 2, 3]
console.log(newNumbers); // [2, 3, 4]
Die Methode map()
verlangt als Parameter eine Funktion. In den ersten drei Zeilen haben wir eine Funktion
mit dem Namen addOne
deklariert. Mit dieser Deklaration wurde gleichzeitig eine Variable mit dem Namen
addOne
erzeugt. Die Variable addOne
enthält die Funktion addOne()
. Diese Funktion
wird nun der Methode map()
übergeben. Intern ruft jetzt map()
die Funktion addOne()
für jedes Array-Element auf. Dabei werden die Array-Elemente addOne()
nacheinander als Parameter übergeben.
addOne()
wird also sukzessive mit den Werten 1
, 2
und 3
aufgerufen.
Als Ergbnis erhält man die Werte 2
, 3
und 4
.
Diese Werte werden von map()
als neues Array zurückgegeben. Das ursprüngliche Array bleibt dabei unverändert.
Die Methode map()
hat also zusammen mit
der Funktion addOne()
das Array [1, 2, 3]
auf das Array [2, 3, 4]
abgebildet.Eine Funktion, die einer anderen Funktion als Parameter übergeben wird und von dieser dann aufgerufen wird, bezeichnet man in der Informatik als Callback.
Aufgabe
Schreibe eine Funktion
Beispiel:
double
, die ein Array mit Zahlen entgegennimmt und die diese Zahlen
verdoppelt als Array zurückgibt.Beispiel:
double([1, 2, 3])
sollte [2, 4, 6]
ergeben.
+ Tipp
Versuche eine Lösung mit Schleife und eine Lösung mit der Array-Methode
map()
zu finden.
+ Lösung
// mit Schleife
function double(myNumbers) {
let result = [];
for (let i = 0; i < myNumbers.length; i++) {
result.push(myNumbers[i] * 2);
}
return result;
}
// mit map()
function timesTwo(x) {
return 2 * x;
}
function double(myNumbers) {
return myNumbers.map(timesTwo);
}