Neben Funktionsdeklarationen und Funktionsausdrücken hat JavaScript noch eine weitere, sehr kompakte Syntax, um eine Funktion zu definieren. Diese Funktionen heißen Pfeilfunktionen.
Hier ist ein Vergleich zwischen einer Funktionsdeklaration und einer Pfeilfunktion.
function addUpTwoNumbers(num1, num2) {
return num1 + num2;
}
// function keyword removed and => added
const addUpTwoNumbers = (num1, num2) => {
return num1 + num2;
};
Wenn der Funktionskörper nur eine return-Anweisung enthält, wie im Beispiel oben, kannst du die {} und das Schlüsselwort return weglassen.
Gibt es nur einen Parameter, kannst du auch die runden Klammern () weglassen.
const addUpTwoNumbers = (num1, num2) => num1 + num2;
const square = num => num * num;
Pfeilfunktionen werden oft verwendet, um kurze Callback-Funktionen direkt im Funktionsaufruf zu definieren.
applyToSquare(number => number * number);
Arrays haben eingebaute Methoden, um den Inhalt des Arrays zu analysieren.
Die meisten dieser Methoden nehmen eine Funktion als Argument, die wahr oder falsch zurückgibt.
Eine solche Funktion heißt predicate.
Die eingebauten Methoden sind dafür gedacht, anstelle einer for-Schleife oder der eingebauten forEach-Methode verwendet zu werden:
Beispiel für eine Analyse mit einer for-Schleife:
const numbers = [1, 'two', 3, 'four'];
for (var i = 0; i < numbers.length; i++) {
if (numbers[i] === 'two') {
return i;
}
}
// => 1
Beispiel für eine Analyse mit einer eingebauten Methode:
const numbers = [1, 'two', 3, 'four'];
numbers.indexOf('two');
// => 1
Einige weitere hilfreiche eingebaute Methoden, mit denen du ein Array analysieren kannst, sind unten aufgeführt. Eine vollständige Liste der Array-Methoden findest du bei MDN.
includesDie Methode includes(value) bestimmt, ob ein Array einen bestimmten Wert enthält.
Wenn der Wert enthalten ist, gibt sie true zurück, sonst false.
const numbers = [1, 'two', 3, 'four'];
numbers.includes(1);
// => true
numbers.includes('one');
// => false
everyDie Methode every(predicate) nimmt eine Funktion, die ein Prädikat ist.
Sie prüft, ob alle Elemente im Array true zurückgeben, wenn sie an das Prädikat übergeben werden.
Mit anderen Worten: Die Methode prüft, dass alle ihre Elemente den Test bestehen, der dem Funktionsaufruf übergeben wurde.
Sie gibt true zurück, wenn jedes Element den Test des Prädikats besteht, sonst false.
const numbers = [1, 3, 5, 7, 9];
numbers.every((num) => num % 2 !== 0);
// => true
someDie Methode some(predicate) ist dieselbe wie die Methode every, gibt aber true zurück, wenn mindestens ein Element im Array den Test des Prädikats besteht.
const numbers = [1, 3, 5, 7, 9];
numbers.some((num) => num % 2 !== 0);
// => true
findDie Methode find(predicate) gibt den Wert des ersten Elements im Array zurück, das den predicate-Test besteht.
Während some() true zurückgibt, wenn ein Element besteht, gibt find() den tatsächlichen Wert im Array zurück.
Die Methode gibt undefined zurück, wenn keines der Elemente im Array den Test des Prädikats besteht.
const numbers = [1, 3, 5, 7, 9];
numbers.find((num) => num < 5);
// => 1
findIndexDie Methode findIndex(predicate) ist dieselbe wie die Methode find(), gibt aber den (ersten) Index des Elements zurück, das den Test des Prädikats besteht, anstatt des value.
Die Methode gibt -1 zurück, wenn keines der Elemente im Array den Test des Prädikats besteht.
const numbers = [1, 3, 5, 7, 9];
numbers.findIndex((num) => num > 7);
// => 4
numbers.findIndex((num) => num > 9);
// => -1
Elyse, eine angehende Zauberin, setzt ihre Ausbildung fort. Sie bekommt mehrere Kartenstapel, mit denen sie ihre Tricks vorführen muss. Damit alles etwas einfacher wird, verwendet sie nur die Karten 1 bis 10.
In dieser Übung verwendest du eingebaute Methoden, um den Inhalt eines Arrays zu analysieren.
Elyse möchte die Position (den Index) einer Karte im Stapel wissen.
const card = 2;
getCardPosition([9, 7, 3, 2], card);
// => 3
Elyse möchte feststellen, ob eine Karte im Stapel vorhanden ist, mit anderen Worten, ob der Stapel eine bestimmte number enthält.
const card = 3;
doesStackIncludeCard([2, 3, 4, 5], card);
// => true
Elyse möchte wissen, ob jede Karte gerade ist, mit anderen Worten, ob jede Zahl im Stapel eine gerade number ist.
isEachCardEven([2, 4, 6, 7]);
// => false
Elyse möchte wissen, ob es eine ungerade Zahl im Stapel gibt.
doesStackIncludeOddCard([3, 2, 6, 4, 8]);
// => true
Elyse möchte den Wert der ersten Karte wissen, die ungerade ist.
getFirstOddCard([4, 2, 8, 7, 9]);
// => 7
Elyse möchte die Position der ersten Karte wissen, die gerade ist.
getFirstEvenCardPosition([5, 2, 3, 1]);
// => 1
Melde dich bei Exercism an, um JavaScript mit 37 Konzepte159 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.