Aller au contenu principal

Opérateurs ternaires

Notions théoriques

L'opérateur ternaire est une forme concise d'écrire des instructions conditionnelles.

Il est appelé "ternaire" parce qu'il utilise 3 opérandes :

  • une condition,
  • une expression à évaluer si la condition est vraie,
  • et une autre expression à évaluer si la condition est fausse.

La syntaxe de l'opérateur ternaire est la suivante :

condition ? expressionSiVrai : expressionSiFaux;

Par exemple, si vous voulez assigner une valeur à une variable en fonction d'une condition, vous pouvez utiliser l'opérateur ternaire de cette manière :

let age = 20;
let estMajeur = (age >= 18) ? "Oui" : "Non";
console.log(estMajeur); // Affiche "Oui"

Exemple pratique

let note = 12;
let mention = (note >= 16) ? "Très bien" : (note >= 14) ? "Bien" : (note >= 12) ? "Assez bien" : "Moyen";
console.log(mention); // Affiche "Assez bien"

Rappel de méthodes à connaître

  • map() : Cette méthode crée un nouveau tableau avec les résultats de l'appel d'une fonction pour chaque élément du tableau.

  • filter() : Cette méthode crée un nouveau tableau avec tous les éléments qui passent le test implémenté par la fonction fournie.

TP simple pour s'entrainer à utiliser les méthodes map() et filter()

Tri et transformation d'un tableau

  1. Créez un tableau nombres qui contient les nombres de 1 à 10.

    let nombres = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];


  1. Utilisez la méthode map() pour créer un nouveau tableau nombresCarres qui contient le carré de chaque nombre.

    Sous la forme let nombresCarres = nombres.map(...);


  1. Utilisez la méthode filter() pour créer un nouveau tableau nombresPairs qui contient seulement les nombres pairs de nombresCarres.

    Sous la forme let nombresPairs = nombresCarres.filter(...);


  1. Affichez le tableau nombres, le tableau nombresCarres et le tableau nombresPairs sur la console.
Une solution

Test de mémorisation/compréhension


Qu'est-ce qu'un opérateur ternaire en JavaScript ?


Combien d'opérandes utilise l'opérateur ternaire ?


Quelle est la syntaxe de l'opérateur ternaire ?


Que fait la méthode map() en JavaScript ?


Quelle est la valeur de retour de la méthode filter() en JavaScript ?


Est-ce que les méthodes map() et filter() modifient le tableau original ?


Quel est le type de valeur que la fonction passée en argument à map() doit retourner ?


Quel est le type de valeur que la fonction passée en argument à filter() doit retourner ?



TP pour réfléchir et résoudre des problèmes

Dans ce TP, nous allons utiliser l'opérateur ternaire pour filtrer des éléments d'un tableau.

  1. Créez un tableau notes qui contient 10 notes entre 1 et 20.

    Une solution

    let notes = [12, 15, 10, 16, 14, 13, 17, 15, 18, 11];


  1. Utilisez la méthode map pour créer un nouveau tableau mentions qui contient les 10 appréciations du prof correspondants à chacune des notes.

    Utilisez l'opérateur ternaire pour déterminer l'appréciation du prof.

    Puis affichez le contenu du tableau des appréciations avec l'instruction console.log(mentions);

    Une solution

    let mentions = notes.map(note => (note >= 16) ? "Très bien" : (note >= 14) ? "Bien" : (note >= 12) ? "Assez bien" : "Moyen");
    console.log(mentions); // Affiche ["Assez bien", "Bien", "Moyen", "Très bien", "Bien", "Assez bien", "Très bien", "Bien", "Très bien", "Moyen"]


  1. Utilisez la méthode filter pour créer un nouveau tableau notesAvecMention qui contient seulement les notes qui ont une mention.

    Puis affichez le contenu du tableau des notes qui ont une mention avec l'instruction console.log(notesAvecMention);

    Une solution

    let notesAvecMention = notes.filter(note => note >= 12);
    console.log(notesAvecMention); // Affiche [12, 15, 16, 14, 13, 17, 15, 18]


Le programme complet
let notes = [12, 15, 10, 16, 14, 13, 17, 15, 18, 11];

let mentions = notes.map(note => (note >= 16) ? "Très bien" : (note >= 14) ? "Bien" : (note >= 12) ? "Assez bien" : "Moyen");
console.log(mentions); // Affiche ["Assez bien", "Bien", "Moyen", "Très bien", "Bien", "Assez bien", "Très bien", "Bien", "Très bien", "Moyen"]

let notesAvecMention = notes.filter(note => note >= 12);
console.log(notesAvecMention); // Affiche [12, 15, 16, 14, 13, 17, 15, 18]