Javascript 1
Exercice 1 — Additionner 42
const numbers = [20, 30, 42, 66, 99];
// 1. En utilisant while
let i = 0;
const resWhile = [];
while (i < numbers.length) {
resWhile.push(numbers[i] + 42);
i++;
}
// 2. En utilisant for
const resFor = [];
for (let j = 0; j < numbers.length; j++) {
resFor.push(numbers[j] + 42);
}
// 3. En utilisant for of
const resForOf = [];
for (const number of numbers) {
resForOf.push(number + 42);
}
Exercice 2 — La somme d’un tableau
const numbers = [20, 30, 42, 66, 99];
let sum = 0;
for (const number of numbers) {
sum += number;
}
console.log(sum); // 257
Exercice 3 — Trois façons d’écrire une fonction
// 1. Déclaration de fonction
function multiply(a, b) {
return a * b;
}
// 2. Fonction anonyme stockée dans une variable
const multiply2 = function (a, b) {
return a * b;
};
// 3. Fonction fléchée, retour implicite
const multiply3 = (a, b) => a * b;
console.log(multiply(6, 7), multiply2(6, 7), multiply3(6, 7)); // 42 42 42
Exercice 4 — Une closure qui compte
function createCounter() {
let count = 0;
return function () {
count++;
return count;
};
}
const a = createCounter();
const b = createCounter();
console.log(a(), a(), a()); // 1 2 3
console.log(b()); // 1
// Bonus
const createAdder = (n) => (value) => value + n;
const add42 = createAdder(42);
console.log(add42(10)); // 52
Chaque appel à createCounter() crée un nouvel environnement : les deux compteurs
ont chacun leur propre count.
Exercice 5 — Manipuler un objet
const user = { name: "Julien", age: 31, city: "Clermont-Ferrand" };
console.log(user.city);
user.job = "Développeur";
console.log(Object.keys(user)); // ["name", "age", "city", "job"]
console.log(Object.values(user)); // ["Julien", 31, "Clermont-Ferrand", "Développeur"]
Exercice 6 — Afficher chaque couleur
const colors = ["blue", "red", "green", "yellow", "cyan"];
colors.forEach((color) => console.log(color));
Exercice 7 — map()
const users = [
{ name: "Julien", age: 31 },
{ name: "Louise", age: 24 },
{ name: "Bastien", age: 22 },
];
const names = users.map((user) => user.name);
console.log(names); // ["Julien", "Louise", "Bastien"]
// Bonus : l'exercice 1 en une ligne
const numbers = [20, 30, 42, 66, 99];
console.log(numbers.map((number) => number + 42));
Exercice 8 — filter()
const users = [
{ name: "Julien", age: 25 },
{ name: "Louise", age: 24 },
{ name: "Bastien", age: 22 },
{ name: "Raphaël", age: 28 },
{ name: "Alexandre", age: 42 },
];
// « moins de 26 ans » : 26 n'est pas inclus
const youngUsers = users.filter((user) => user.age < 26);
Exercice 9 — find()
const users = [
{ name: "Julien", age: 31 },
{ name: "Louise", age: 28 },
{ name: "Bastien", age: 22 },
{ name: "Alexandre", age: 42 },
{ name: "Julien", age: 55 },
];
const julien31 = users.find((user) => user.name === "Julien" && user.age === 31);
// Sans le critère sur l'âge, find() renvoie le PREMIER Julien (31 ans ici).
// Quand rien ne correspond, find() renvoie undefined.
console.log(users.find((user) => user.name === "Inconnu")); // undefined
Exercice 10 — some() et every()
const users = [
{ name: "Julien", age: 31 },
{ name: "Louise", age: 24 },
{ name: "Alexandre", age: 42 },
];
console.log(users.some((user) => user.age > 40)); // true
console.log(users.every((user) => user.age >= 18)); // true
Exercice 11 — Trier par âge
const users = [
{ name: "Julien", age: 31 },
{ name: "Louise", age: 24 },
{ name: "Bastien", age: 22 },
];
// 1. sort() MODIFIE le tableau d'origine : on le copie avant
const sortedByAge = [...users].sort((a, b) => a.age - b.age);
// 2. toSorted() (ES2023) retourne un nouveau tableau, l'original est intact
const toSortedByAge = users.toSorted((a, b) => a.age - b.age);
// 3. Ordre décroissant
const sortedDescending = users.toSorted((a, b) => b.age - a.age);
Si vous appelez users.sort(...) directement puis affichez users, il est trié :
c’est une mutation. On y reviendra en Javascript 4.
Exercice 12 — reduce()
const numbers = [20, 30, 42, 66, 99];
const sum = numbers.reduce(
(accumulator, currentValue) => accumulator + currentValue,
0
);
console.log(sum); // 257
// Bonus : l'âge moyen
const users = [
{ name: "Julien", age: 31 },
{ name: "Louise", age: 24 },
{ name: "Bastien", age: 22 },
];
const averageAge =
users.reduce((total, user) => total + user.age, 0) / users.length;
Exercice 13 — Enchaîner les méthodes
const users = [
{ name: "Julien", age: 31 },
{ name: "Louise", age: 24 },
{ name: "Bastien", age: 22 },
{ name: "Alexandre", age: 42 },
];
const result = users
.filter((user) => user.age < 30)
.map((user) => user.name.toUpperCase());
console.log(result); // ["LOUISE", "BASTIEN"]