Outre les déclarations de fonction et les expressions de fonction, JavaScript dispose aussi d'une syntaxe très concise pour définir une fonction. Ces fonctions sont appelées fonctions fléchées.
Voici une comparaison entre une déclaration de fonction et une fonction fléchée.
function addUpTwoNumbers(num1, num2) {
return num1 + num2;
}
// function keyword removed and => added
const addUpTwoNumbers = (num1, num2) => {
return num1 + num2;
};
Si le corps de la fonction ne contient qu'une instruction return, comme dans l'exemple ci-dessus, les {} et le mot-clé return peuvent être omis.
S'il n'y a qu'un seul paramètre, les parenthèses () peuvent aussi être omises.
const addUpTwoNumbers = (num1, num2) => num1 + num2;
const square = num => num * num;
Les fonctions fléchées sont souvent utilisées pour définir de courtes fonctions de rappel directement dans l'appel de fonction.
applyToSquare(number => number * number);
Les tableaux ont des méthodes intégrées pour analyser leur contenu.
La plupart de ces méthodes prennent en argument une fonction qui renvoie vrai ou faux.
Une telle fonction est appelée un predicate.
Ces méthodes intégrées sont destinées à être utilisées à la place d'une boucle for ou de la méthode forEach intégrée :
Exemple d'analyse avec une boucle for :
const numbers = [1, 'two', 3, 'four'];
for (var i = 0; i < numbers.length; i++) {
if (numbers[i] === 'two') {
return i;
}
}
// => 1
Exemple d'analyse avec une méthode intégrée :
const numbers = [1, 'two', 3, 'four'];
numbers.indexOf('two');
// => 1
D'autres méthodes intégrées utiles pour analyser un tableau sont présentées ci-dessous. Consulte MDN pour une liste complète des méthodes de tableau.
includesLa méthode includes(value) détermine si un tableau contient une certaine valeur.
Elle renvoie true lorsque la valeur est incluse, false sinon.
const numbers = [1, 'two', 3, 'four'];
numbers.includes(1);
// => true
numbers.includes('one');
// => false
everyLa méthode every(predicate) prend une fonction qui est un prédicat.
Elle teste si tous les éléments du tableau renvoient true lorsqu'ils sont passés au prédicat.
Autrement dit, la méthode vérifie que tous ses éléments réussissent le test qui lui est passé.
Elle renvoie true lorsque chaque élément réussit le test du prédicat, false sinon.
const numbers = [1, 3, 5, 7, 9];
numbers.every((num) => num % 2 !== 0);
// => true
someLa méthode some(predicate) est identique à la méthode every, mais renvoie true si au moins un élément du tableau réussit le test du prédicat.
const numbers = [1, 3, 5, 7, 9];
numbers.some((num) => num % 2 !== 0);
// => true
findLa méthode find(predicate) renvoie la valeur du premier élément du tableau qui réussit le test predicate.
Là où some() renvoie true en cas de réussite, find() renvoie la valeur réelle dans le tableau.
La méthode renvoie undefined lorsqu'aucun des éléments du tableau ne réussit le test du prédicat.
const numbers = [1, 3, 5, 7, 9];
numbers.find((num) => num < 5);
// => 1
findIndexLa méthode findIndex(predicate) est identique à la méthode find(), mais elle renvoie l'indice (le premier) de l'élément qui réussit le test du prédicat au lieu de la value.
La méthode renvoie -1 lorsqu'aucun des éléments du tableau ne réussit le test du prédicat.
const numbers = [1, 3, 5, 7, 9];
numbers.findIndex((num) => num > 7);
// => 4
numbers.findIndex((num) => num > 9);
// => -1
Elyse, future magicienne, poursuit son entraînement. On lui donnera plusieurs piles de cartes dont elle a besoin pour exécuter ses tours. Pour simplifier un peu les choses, elle n'utilise que les cartes de 1 à 10.
Dans cet exercice, utilise des méthodes natives pour analyser le contenu d'un tableau.
Elyse veut connaître la position (l'indice) d'une carte dans la pile.
const card = 2;
getCardPosition([9, 7, 3, 2], card);
// => 3
Elyse veut déterminer si une carte est présente dans la pile, autrement dit si la pile contient un number spécifique.
const card = 3;
doesStackIncludeCard([2, 3, 4, 5], card);
// => true
Elyse veut savoir si chaque carte est paire, autrement dit si chaque nombre de la pile est un number pair.
isEachCardEven([2, 4, 6, 7]);
// => false
Elyse veut savoir s'il y a un nombre impair dans la pile.
doesStackIncludeOddCard([3, 2, 6, 4, 8]);
// => true
Elyse veut connaître la valeur de la première carte qui est impaire.
getFirstOddCard([4, 2, 8, 7, 9]);
// => 7
Elyse veut connaître la position de la première carte qui est paire.
getFirstEvenCardPosition([5, 2, 3, 1]);
// => 1
Inscris-toi sur Exercism pour apprendre et maîtriser JavaScript avec 37 concepts159 exercices, et un vrai mentorat humain, le tout gratuitement.