Javascript 1


Ces exercices sont ceux de la séance : ils sont intercalés dans les slides, juste après le concept qu’ils font travailler. Cette page les rassemble pour que vous puissiez les reprendre à votre rythme.

La documentation de Javascript est disponible ici ou là.

Exercice 1 — Additionner 42

Facile ⏱ 6 min

🎯 Parcourir un tableau avec les trois formes de boucle.

Ajouter 42 à chaque élément du tableau, avec while, puis for, puis for of.

const numbers = [20, 30, 42, 66, 99];

// Attendu : [62, 72, 84, 108, 141]
console.log(numbers);

Exercice 2 — La somme d'un tableau

Facile ⏱ 5 min

🎯 Accumuler une valeur au fil d'une boucle.

Calculer la somme des éléments du tableau en utilisant for of.

const numbers = [20, 30, 42, 66, 99]

// Attendu : 257

💡 On reverra cet exercice avec reduce() en fin de séance.

Exercice 3 — Trois façons d'écrire une fonction

Facile ⏱ 6 min

🎯 Reconnaître les syntaxes de fonction que vous croiserez dans du vrai code.

Écrire la fonction multiply(a, b) de trois façons : déclaration, fonction anonyme stockée dans une variable, fonction fléchée en une ligne.

// 1. function multiply(...)
// 2. const multiply2 = function (...)
// 3. const multiply3 = (...) => ...

// Les trois doivent afficher 42

Exercice 4 — Une closure qui compte

Intermédiaire ⏱ 6 min

🎯 Comprendre qu'une fonction retient l'environnement dans lequel elle est née.

Écrire createCounter() qui retourne une fonction : chaque appel renvoie 1, 2, 3… Deux compteurs créés séparément ne doivent pas partager leur valeur.

function createCounter() {
  // à vous
}

const a = createCounter();
const b = createCounter();
console.log(a(), a(), a()); // 1 2 3
console.log(b()); // 1

Bonus : createAdder(n) retourne une fonction qui ajoute n à son argument.

Exercice 5 — Manipuler un objet

Facile ⏱ 6 min

🎯 Lire, ajouter et parcourir les propriétés d'un objet.

À partir de l’objet ci-dessous : afficher la ville, ajouter la propriété job, puis afficher toutes les clés et toutes les valeurs.

const user = { name: "Julien", age: 31, city: "Clermont-Ferrand" }

// 1. Afficher la ville
// 2. Ajouter user.job = "Développeur"
// 3. Afficher les clés, puis les valeurs (Object.keys / Object.values)

Exercice 6 — Afficher chaque couleur

Facile ⏱ 4 min

🎯 Utiliser une méthode de tableau plutôt qu'une boucle manuelle.

Afficher dans la console chacune des valeurs du tableau, avec forEach().

const colors = ["blue", "red", "green", "yellow", "cyan"]

// Attendu : blue red green yellow cyan

Exercice 7 — map() — transformer chaque élément

Facile ⏱ 5 min

🎯 Produire un nouveau tableau de même longueur.

Récupérer uniquement les prénoms des utilisateurs avec map().

const users = [
  { name: "Julien", age: 31 },
  { name: "Louise", age: 24 },
  { name: "Bastien", age: 22 },
]

// Attendu : ["Julien", "Louise", "Bastien"]

Bonus : reprendre l’exercice « Additionner 42 » et le réécrire avec map(). Combien de lignes gagnées ?

Exercice 8 — filter() — garder certains éléments

Facile ⏱ 5 min

🎯 Produire un nouveau tableau plus court.

Récupérer les personnes de moins de 26 ans avec filter().

const users = [
  { name: "Julien", age: 25 },
  { name: "Louise", age: 24 },
  { name: "Bastien", age: 22 },
  { name: "Raphaël", age: 28 },
  { name: "Alexandre", age: 42 },
]

// Attendu : Julien (25), Louise (24), Bastien (22)

Exercice 9 — find() — le premier qui correspond

Intermédiaire ⏱ 5 min

🎯 Voir la différence entre « filtrer » et « trouver ».

Récupérer l’objet { name: "Julien", age: 31 } avec find(). Attention : il y a deux Julien.

const users = [
  { name: "Julien", age: 31 },
  { name: "Louise", age: 28 },
  { name: "Bastien", age: 22 },
  { name: "Alexandre", age: 42 },
  { name: "Julien", age: 55 },
]

// Attendu : { name: "Julien", age: 31 }

Que retourne find() quand rien ne correspond ?

Exercice 10 — some() et every()

Facile ⏱ 5 min

🎯 Répondre par oui ou non sur tout un tableau.

Vérifier qu’au moins une personne a plus de 40 ans avec some(), puis que toutes sont majeures avec every().

const users = [
  { name: "Julien", age: 31 },
  { name: "Louise", age: 24 },
  { name: "Alexandre", age: 42 },
]

// Attendu : true, puis true

Exercice 11 — Trier par âge

Intermédiaire ⏱ 6 min

🎯 Trier sans casser le tableau d'origine.

Trier les utilisateurs par âge croissant avec sort(), puis avec toSorted(), puis en ordre décroissant.

const users = [
  { name: "Julien", age: 31 },
  { name: "Louise", age: 24 },
  { name: "Bastien", age: 22 },
];

// Attendu : Bastien (22), Louise (24), Julien (31)

Après votre sort(), affichez users. Que constatez-vous ?

Exercice 12 — reduce() — tout réduire à une valeur

Intermédiaire ⏱ 6 min

🎯 Remplacer une boucle d'accumulation par une seule expression.

Reprendre la somme du tableau, cette fois avec reduce().

const numbers = [20, 30, 42, 66, 99]

// Attendu : 257

Bonus : calculer l’âge moyen des utilisateurs de l’exercice précédent.

Exercice 13 — Tout enchaîner en une expression

Difficile ⏱ 6 min

🎯 Écrire une transformation complète en une seule expression.

Récupérer les prénoms des personnes de moins de 30 ans, en majuscules, sans passer par une variable intermédiaire.

const users = [
  { name: "Julien", age: 31 },
  { name: "Louise", age: 24 },
  { name: "Bastien", age: 22 },
  { name: "Alexandre", age: 42 },
];

// Attendu : ["LOUISE", "BASTIEN"]