Vous êtes sur la page 1sur 55

Exercice JavaScript Corrigé – Partie 1

avril 14, 2020 5 Commentaires challenges de programmation, corrigé, défi


programmation, entretien, exemple test, javascript pratique, langage javascript
test, recrutement, solution, test en ligne, test technique javascript, tp javascript

A vec des exercices corrigés en JavaScript, vous pratiquerez divers


concepts du langage JavaScript. Vous commencerez par des exercices
JavaScript de base à des exercices plus avancés. La solution est fournie pour
chaque exercice. Vous devez essayer de résoudre chaque problème par
vous-même avant de vérifier la solution. Si vous avez des questions
concernant chaque problème, nous vous encourageons à les poster sur
notre forum.
 

 
Exercice 1:
Créez une fonction qui prend deux nombres comme arguments et retourne
leur somme.

Exemple:
addition(1, 2) ➞ 3

addition(-2, -4) ➞ -6

Corrigé
Solution:
function addition(x, y) {
if (typeof x !== "number" || typeof y !== "number") {
return "Erreur : veuillez entrer deux nombres!";
}
return x + y;
}

 
Exercice 2:
Écrivez une fonction qui prend un nombre entier de minutes et le convertit en
secondes.

Exemple:
minuteToSecond(4) ➞ 240
minuteToSecond(3) ➞ 180

Corrigé
Solution:
function minuteToSecond(minutes) {
return minutes * 60;
}

 
Exercice 3:
Créez une fonction qui prend un nombre en argument, incrémente le nombre
+1 et renvoie le résultat.

Exemple:
increment(1) ➞ 2

increment(4) ➞ 5

Corrigé
Solution:
function increment(n) {
return ++n;
}

 
Exercice 4:
Écrivez une fonction qui prend la base et la hauteur d’un triangle et retourne
sa surface. Notez que la surface d’un triangle est: (base * hauteur) / 2

Exemple:
getSurface(8, 2) ➞ 8

getSurface(7, 3) ➞ 10.5

Corrigé
Formule : (base * hauteur) / 2
Solution:
function getSurface(base, hauteur) {
return base * hauteur /2
}

 
Exercice 5:
Écrivez un programme JavaScript pour inverser une chaîne de caractères.

Exemple:
strReverse(‘WayToLearnX’) ➞ XnraeLoTyaW

strReverse(‘Hello’) ➞ olleH

Corrigé
Solution:
function strReverse(str) {
return str.split("").reverse().join("");
}

 
Exercice 6:
Écrivez un programme JavaScript pour trouver le plus grand des trois entiers
donnés.

Exemple:
getMax(5, 9, 1) ➞ 9

getMax(2, 3, 10) ➞ 10

Corrigé
Solution:
function getMax(a, b, c) {
max = 0;
if (a > b){
max = a;
}
else{
max = b;
}
if (c > max){
max = c;
}
return max;
}

 
Exercice 7:
Créez une fonction qui prend un tableau et renvoie le premier élément. Notez
que le premier élément d’un tableau commence toujours par l’index 0.

Exemple:
getFirst([1, 2, 3]) ➞ 1

getFirst([50, 60, 70]) ➞ 50

Corrigé
Solution:
function getFirst(tab) {
return tab[0];
}

 
Exercice 8:
Écrivez un programme JavaScript pour récupérer l’URL d’un site Web

// Écrivez votre code ici

Corrigé
Solution:
console.log(document.URL);
Voir aussi : Comment récupérer l’url de la page courante avec JavaScript

 
Exercice 9:
Écrivez un programme JavaScript pour renvoyer le reste de deux nombres. Il
existe un seul opérateur en JavaScript, capable de fournir le reste d’une
division. Deux nombres sont transmis comme paramètres. Le premier
paramètre divisé par le deuxième paramètre.

Exemple:
resteDiv(1, 3) ➞ 1

resteDiv(2, 4) ➞ 2

resteDiv(3, 3) ➞ 0

Corrigé
Solution:
function resteDiv(a, b) {
return a % b;
}

Exercice 1:
Corrigez le code suivant (Erreur de syntaxe), pour calculer le carré.
Exemple:
carre(2) ➞ 4

carre(4) ➞ 16

Corrigé
Solution:
function carre(b) {
return b*b;
}
 
Exercice 2: < 100
Avec deux nombres, retournez TRUE si la somme des deux nombres est
inférieure à 100. Sinon, retournez FALSE.
Exemple:
check(5, 20) ➞ true
// 5 + 20 = 25

check(60, 55) ➞ false


// 60 + 55 = 115
Corrigé
Solution:
function check(a, b) {
return a + b < 100;
}
 
Exercice 3:
Écrivez une fonction qui convertit les heures en secondes. Notez qu’il y a
60 secondes en une minute et 60 minutes en une heure.
Exemple:
heureSeconde(1) ➞ 3600

heureSeconde(5) ➞ 18000

Corrigé
Solution:
function heureSeconde(heure) {
return heure * 3600;
}
 
 
Exercice 4:
Créez une fonction qui prend un nombre et renvoie TRUE s’il est
inférieur ou égal à zéro, sinon retournez FALSE.
Exemple:
checkNbr(1) ➞ false

checkNbr(-1) ➞ true

checkNbr(0) ➞ true
Corrigé
Solution:
function checkNbr(n) {
return n <= 0;
}
 
Exercice 5:
Créez une fonction qui renvoie TRUE lorsque nbr1 est égal à nbr2; sinon
retournez FALSE.
Exemple:
isEqual(3, 6) ➞ false

isEqual(1, ‘1’) ➞ false

isEqual(1, 1) ➞ true
Corrigé
Solution:
function isEqual(nbr1, nbr2) {
return nbr1 === nbr2
}
 
Exercice 6:
Créez une fonction qui renvoie TRUE si un entier est divisible par 5,
sinon retournez FALSE.
Exemple:
isDivisible(5) ➞ true

isDivisible(10) ➞ true

isDivisible(6) ➞ false

Corrigé
Solution:
function isDivisible(n) {
return n % 5 === 0;
}
 
 
Exercice 7:
Écrivez une fonction qui prend deux entiers (heures, minutes) et les
convertit en secondes.
Exemple:
hmTos(1, 10) ➞ 4200

hmTos(0, 59) ➞ 3540

hmTos(0, 0) ➞ 0
Corrigé
Solution:
function hmTos(heure, minute) {
return (heure*3600) + (minute*60);
}
 
Exercice 8:
Écrivez une fonction pour inverser un tableau. Attention: N’utilisez pas la
méthode intégrée reverse();
Exemple:
reverseTab([1, 2, 3]) ➞ [3, 2, 1]

reverseTab([1, 1, 2, 2, 3]) ➞ [3, 2, 2, 1, 1]

Corrigé
Solution:
function reverseTab(tab) {
let res = [];
for (let i = tab.length -1; i > -1; i--) {
res.push(tab[i]);
}
return res;
}
 
Exercice 9:
Créez une fonction qui prend un tableau et renvoie le dernier élément du
tableau.
Exemple:
getLastElem([1, 2, 3, 4]) ➞ 4

getLastElem([‘Alex’, ‘Bob’, ‘Emily’]) ➞ ‘Emily’


Corrigé
Solution:
function getLastElem(tab) {
return tab[tab.length - 1]
}

Exercice 1:
Créez une fonction qui vérifier l’égalité de deux paramètres a et b. La valeur et le type de
paramètres doivent être testés afin d’avoir une égalité. La fonction doit renvoyer TRUE si les
paramètres sont égaux et FALSE s’ils sont différents.
Exemple:
checkEq(5, 5) ➞ true
// number = number: leur type et leur valeur sont égaux

checkEq(5, 0) ➞ false
// number = number: leur type sont égaux et leur valeur sont différent

checkEq(5, false) ➞ false


// number <> boolean: leur type est différent

checkEq(5, ‘5’) ➞ false


// number <> string: leur type est différent

Corrigé

Solution:
Manager de transition, Faut il êt...
Pause

Unmute

Loaded: 41.52%

Remaining Time -4:07

Fullscreen

Manager de transition, Faut il être indépendant ?

function checkEq(a, b) {

return a === b;

}
Voir aussi : Différence entre == et === en JavaScript
 

Exercice 2:
Créez une fonction qui renvoie TRUE si une chaîne est vide et sinon renvoie FALSE.

Exemple:

isEmpty("1") ➞ false

isEmpty("WayToLearnX") ➞ false
isEmpty(" ") ➞ false

isEmpty("") ➞ true

Corrigé

Solution:

function isEmpty(str) {

return str.length == 0;

}
 

Exercice 3: Concaténer deux chaînes en une seule chaîne


Avec deux chaînes, str1 et str2, renvoyez une seule chaîne au format « str1 | str2 ».

Exemple:

concatStr("True", "False") ➞ "True | False"

concatStr("On", "Off") ➞ "On | Off"

concatStr("A", "B") ➞ "A | B"

Corrigé

Solution:

function concatStr(str1, str2) {

return `${str1} | ${str2}`;

}
 
 

Exercice 4:
Créez une fonction qui prend un nom et renvoie un message d’accueil sous la forme d’une
chaîne. N’utilisez pas une fonction normale mais utilisez une fonction fléchée(Arrow)
Exemple:

msg("Thomas") ➞ "Hello Thomas, Welcome to WayToLearnX!"

msg("Alex") ➞ "Hello Alex, Welcome to WayToLearnX!"

msg("Emily") ➞ "Hello Emily, Welcome to WayToLearnX!"

Corrigé

Solution:

const msg = name => `Hello ${name}, Welcome to WayToLearnX!`


Voir aussi : Les fonctions fléchées en Javascript
 

Exercice 5:
Écrivez une fonction qui renvoie la longueur d’une chaîne. Utiliser une fonction récursive.

Exemple:

size("alex") ➞ 5

size("x") ➞ 1

size("") ➞ 0

Corrigé

Solution:

function size(str, n = 0) {

if(str[n] === undefined) {

return n
}

return size(str, n + 1)

}
 

Exercice 6:
Créez une fonction qui prend deux chaînes str1 et str2 comme arguments et renvoie TRUE si
le nombre total de caractères dans la première chaîne est égal au nombre total de caractères
dans la deuxième chaîne sinon renvoie FALSE.

Exemple:

compareSize("AA", "BB") ➞ true

compareSize("123", "1") ➞ false

compareSize("Ali", "Bob") ➞ true

Corrigé

Solution:

function compareSize(str1, str2) {

return str1.length === str2.length;

}
 
 

Exercice 7:
Créez une fonction qui prend la hauteur et la largeur et trouve le périmètre d’un rectangle.

Exemple:
getPerimeter(2, 6) ➞ 16

getPerimeter(3, 10) ➞ 26

getPerimeter(1, 5) ➞ 12

Corrigé
La formule pour calculer le périmètre d’un rectangle est (hauteur + largeur) * 2
Solution:

function getPerimeter(height, width) {

return (height + width) * 2;

}
 

Exercice 8: Le problème du fermier


Dans ce défi, un fermier vous demande de lui dire combien de pattes peuvent être comptées
parmi tous ses animaux. Il y a trois espèces:

 poulets = 2 pattes

 vaches = 4 pattes

 chevaux = 4 pattes

Le fermier a compté ses animaux et il vous donne un sous-total pour chaque espèce. Vous
devez implémenter une fonction qui renvoie le nombre total de pattes de tous les animaux.

L’ordre des animaux transmis à la fonction est nbrsPattes(poulets, vaches, chevaux).

Exemple:
nbrsPattes(1, 4, 2) ➞ 26

nbrsPattes(2, 2, 2) ➞ 20

nbrsPattes(2, 0, 3) ➞ 16

N’oubliez pas que le fermier veut connaître le nombre total de pattes et non pas le nombre
total d’animaux.

Corrigé

Solution:

function nbrsPattes(poulets, vaches, chevaux) {

return poulets * 2 + (vaches + chevaux) * 4;

}
 

Exercice 9: Nombre paire ou impaire


Créez une fonction qui prend un nombre comme argument et renvoie « pair » pour les
nombres pairs et « impair » pour les nombres impairs.

Exemple:
check(2) ➞ "pair"

check(7) ➞ "impair"

check(22) ➞ "pair"

Corrigé

Solution:

function check(n) {

return n % 2 ? 'impaire' : 'paire';

Exercice 1:
Créez une fonction pour concaténer deux tableaux entiers.

Exemple:
concatener([1, 2], [3, 4]) ➞ [1, 2, 3, 4]

concatener([9, 8], [1, 5, 6, 7]) ➞ [9, 8, 1, 5, 6, 7]

concatener([1, 1, 1], [2, 2, 2]) ➞ [1, 1, 1, 2, 2, 2]

Corrigé
Les trois points (…) représentent l’opérateur « Spread » dans ES6 qui permet à une
expression d’être élargi.
Solution:
function concatener(tab1, tab2) {
return [...tab1,...tab2]
}
 
Exercice 2:
Créez une fonction qui trouve l’index d’un élément donné. Si l’élément n’existe pas,
retournez -1.

Exemple:
find([2, 7, 1], 7) ➞ 1

find([6, 9, 5], 6) ➞ 0

find([6, 7, 8], 9) ➞ -1

Corrigé
Solution:
function find(tab, val) {
for(var i = 0; i < tab.length; i++){
if(tab[i] == val) return i;
}
return -1;
}
 
Exercice 3:
Écrivez une fonction pour vérifier si un tableau contient un nombre particulier.

Exemple:
nbrExist([6, 7, 8], 7) ➞ true

nbrExist([1, 2, 3], 5) ➞ false

nbrExist([], 0) ➞ false

Corrigé
Solution:
function nbrExist(tab, val) {
for (var i = 0; i < tab.length; i++){
if (tab[i] === val){
return true;
}
}
return false;
}
Comment devenir manager de transiti...
Pause
Unmute
Loaded: 25.60%

Remaining Time -6:15
Fullscreen

Comment devenir manager de transition


 
 
Exercice 4:
Créez une fonction qui prend une chaîne (un nom aléatoire). Si le dernier caractère du nom est
un « s », retournez TRUE, sinon retournez FALSE.

Exemple:

checkS("Thomas") ➞ true

checkS("Ali") ➞ false

checkS("Alex") ➞ false

checkS("Alvis") ➞ true

Corrigé
Solution:
function checkS(str) {
return str[str.length-1] === "s";
}
 
Exercice 5:
Créez une fonction qui renvoie TRUE si une chaîne contient des espaces. Sinon renvoie
FALSE.

Exemple:

containSpaces("Thomas") ➞ false

containSpaces("Hello World!") ➞ true


containSpaces(" ") ➞ true

containSpaces("") ➞ false

Corrigé
Solution:
function containSpaces(str) {
return str.includes(' ')
}
 
Exercice 6:
Créez une fonction qui prend un objet comme argument et renvoie une chaîne qui représente
une personne. Les attributs de la personne devront être extraits des trois propriétés de l’objet:

 nom

 age

 adresse

La chaîne doit avoir le format suivant: X a Y ans. Il habite à Z. (où X est le nom de la
personne, Y est l’age et Z est l’adresse).

Exemple:

formatPrs({

nom: "Thomas",

age: "25",

adresse: "Paris"

})

➞ "Thomas a 25 ans. Il habite à Paris."

formatPrs({

nom: "Emily",
age: "22",

adresse: "Nantes"

})

➞ "Emily a 22 ans. Il habite à Nantes."

Corrigé
Solution:
function formatPrs(personne) {
return `${personne.nom} a ${personne.age} ans. Il habite à ${personne.adresse}.`;
}
 
 
Exercice 7:
Créez une fonction qui prend une chaîne représentant l’humeur et renvoie une phrase au
format suivant: « Aujourd’hui, je me sens {feeling} ». Cependant, si aucun argument n’est
passé, retournez « Aujourd’hui, je me sens neutre ».

Exemple:

myFeeling("heureux") ➞ "Aujourd'hui, je me sens heureux"

myFeeling("triste") ➞ "Aujourd'hui, je me sens triste"

myFeeling() ➞ "Aujourd'hui, je me sens neutre"

Corrigé
Solution:
function myFeeling(feeling) {
return `Aujourd'hui, je me sens ${feeling || "neutre"}`
}
 
Exercice 8:
Créez une fonction qui renvoie le nombre d’arguments avec lesquels elle a été appelée.

Exemple:
nbrArgs() ➞ 0

nbrArgs({}) ➞ 1

nbrArgs("A") ➞ 1

nbrArgs("A", "B") ➞ 2

Corrigé
Solution:
function nbrArgs() {
return arguments.length;
}
 
Exercice 9:
Créez une fonction qui prend un mot et détermine s’il est pluriel ou singulier. Un mot pluriel
est celui qui se termine par « s ». S’il est pluriel renvoyer TRUE sinon FALSE.

Exemple:

check("enfants") ➞ true

check("filles") ➞ true

check("fille") ➞ false

check("enfant") ➞ false

Corrigé
Solution:
function check(str) {
return str[str.length - 1] == 's';
}
 

Exercice 1:
Écrivez une fonction qui prend un entier et:

 Si le nombre est un multiple de 3, retournez « Hello ».

 Si le nombre est un multiple de 5, retournez « World ».

 Si le nombre est un multiple de 3 et de 5, retournez « Hello World ».

Exemple:

checkNbr(3) ➞ "Hello"

checkNbr(5) ➞ "World"

checkNbr(15) ➞ "Hello World"

Corrigé
Solution:
function checkNbr(n) {
return n % 15 === 0 ? "Hello World" : n % 3 === 0 ? "Hello" : "World";
}
 
Exercice 2:
Écrivez l’expression régulière qui révèle le message caché. Vous devez supprimer tous les
nombres pour révéler le message. Utilisez la classe de caractères \D dans votre expression.

Corrigé
\D est utilisé pour trouver le caractère non numérique. g effectuer une correspondance
globale.
Solution:
var patt = /\D */g;
 
Exercice 3:
Créez une fonction qui prend un tableau avec des nombres et retourne un tableau avec les
éléments multipliés par deux.

Exemple:
tabX2([1, 2, 3]) ➞ [ 2, 4, 6 ]

tabX2([5, 10, 20]) ➞ [ 10, 20, 40 ]

tabX2([100, 200, 300]) ➞ [ 200, 400, 600 ]

Corrigé
Solution:
function tabX2(tab) {
return tab.map(i => i * 2)
}
 
 
Exercice 4:
Créez une fonction qui prend trois nombres comme arguments et renvoie TRUE si c’est un
triangle, sinon renvoie FALSE.

Exemple:

isTriangle(2, 3, 4) ➞ true

isTriangle(2, 4, 5) ➞ true

isTriangle(8, 2, 1) ➞ false

Notez que a, b et, c sont les longueurs des côtés du triangle.

Corrigé
Déterminer si la longueur des trois côtés peuvent faire un triangle est plus facile. Tout ce que
vous avez à faire est d’utiliser le théorème d’inégalité, qui stipule que la somme des longueurs
de deux côtés d’un triangle est toujours supérieure au troisième côté. Si cela est vrai pour les
trois combinaisons, vous aurez un triangle.
La forumule:
a+b>c
a+c>b
b+c>a

Solution:
function isTriangle(a, b, c) {
return a + b > c && b + c > a && c + a > b
}
 
Exercice 5:
Créez une fonction qui renvoie la valeur ASCII du caractère transmis.

Exemple:

charToAscii("A") ➞ 65

charToAscii("a") ➞ 97

charToAscii("+") ➞ 43

Corrigé
La méthode charCodeAt() renvoie un entier compris entre 0 et 65535 représentant l’unité de
code UTF-16 à l’index donné.
Solution:
function charToAscii(c) {
return c.charCodeAt(0);
}
 
Exercice 6:
Avec une fraction sous forme d’une chaîne, indiquez si elle est supérieure ou non à 1
lorsqu’elle est évaluée.

Exemple:

FracSup1("2/2") ➞ false

FracSup1("8/2") ➞ true

FracSup1("1/2") ➞ false
Corrigé
eval() est une fonction globale en JavaScript qui évalue une chaîne spécifiée en tant que code
JavaScript et l’exécute.
Solution:
function FracSup1(f) {
return eval(f) > 1;
}
 
 
Exercice 7:
Créez une fonction qui prend un tableau et renvoie la somme de tous les nombres du tableau.

Exemple:

sum([1, 1, 1]) ➞ 3

sum([1, 2, 3]) ➞ 6

sum([-2, 2, 1]) ➞ 1

Corrigé
Solution:
function sum(tab) {
let s = 0
for (let i = 0; i < tab.length; i++) {
s += tab[i]
}
return s
}
 
Exercice 8:
Créez une fonction qui prend un tableau de mots et le transforme en un tableau de longueur de
chaque mot.

Exemple:

countStr(["A", "B", "C"]) ➞ [1, 1, 1]


countStr(["Welcome", "To", "WayToLearnX"]) ➞ [7, 2, 11]

countStr(["Bob", "Ali", "Thomas"]) ➞ [3, 3, 6]

Corrigé
Solution:
function countStr(tab) {
return tab.map(str => str.length);
}
 
Exercice 9:
Créez une fonction qui renvoie le nombre de syllabes dans une chaîne.

Exemple:

nbrOfSyllables("SOSOSOSO") ➞ 4

nbrOfSyllables("HAHAHAHAHA") ➞ 5

nbrOfSyllables("RIRIRIRIRIRIRIRIRIRI") ➞ 10

Solution:
function nbrOfSyllables(str) {
return str.length/2;
}

Exercice 1:
Créez une fonction qui prend une chaîne et renvoie TRUE ou FALSE, selon que les caractères
sont en ordre ou non.

Exemple:

checkOrder("abc") ➞ true

checkOrder("zyx") ➞ false

checkOrder("123") ➞ true

checkOrder("aabbcc") ➞ true

Corrigé

Solution:

function checkOrder(str) {

return str === str.split("").sort().join("")

}
 

Exercice 2:
Créez une fonction qui ajoute une sous-chaîne à la fin de chaque chaîne du tableau.

Exemple:

addEnd(["accept", "achet", "adapt"], "able") ➞ ["acceptable", "achetable", "adaptable"]

addEnd(["aim", "act", "ard"], "ant") ➞ ["aimant", "actant", "ardant"]

Corrigé

Solution:

function addEnd(tableau, fin) {


return tableau.map(mot => mot + fin);

}
 

Exercice 3:
Créez une fonction qui vérifie si l’argument est un entier ou une chaîne. Renvoie « int » s’il
s’agit d’un entier et « string » s’il s’agit d’une chaîne.

Exemple:

checkIntOrStr("WayToLearnX") ➞ "string"

checkIntOrStr(1) ➞ "int"

checkIntOrStr("250") ➞ "string"

Corrigé

Solution:

function checkIntOrStr(x) {

if (typeof x === "number") {

return "int";

} else if (typeof x === "string") {

return "string";

}
 
 

Exercice 4:
Créez une fonction qui prend une phrase et renvoie le nombre de mots.

Exemple:
count("Welcome to WayToLearnX") ➞ 3

count("Hello World") ➞ 2

count("I am going to my school") ➞ 6

Corrigé 

Exercice 5:
Créez une fonction récursive qui renvoie le total de tous les nombres impairs jusqu’à
n(inclus). n sera donné comme un nombre impair.

Exemple:

sommeImpair(3) ➞ 4

// 1 + 3 = 4

sommeImpair(7) ➞ 16

sommeImpair(59) ➞ 900

Corrigé

Solution:

function sommeImpair(n) {

if(n === 1) return 1

return n + sommeImpair(n - 2)

}
 

Exercice 6:
Créez une fonction qui renvoie TRUE si la chaîne passée en paramètre ne contient que des
lettres majuscules ou minuscules.
Exemple:

isSameCase("WayToLearnX") ➞ false

isSameCase("waytolearnx") ➞ true

isSameCase("WAYTOLEARNX") ➞ true

Corrigé

Solution:

function isSameCase(str) {

return str.toUpperCase() === str || str.toLowerCase() === str;

}
 
 

Exercice 7:
Créez une fonction pour multiplier toutes les valeurs d’un tableau par la longueur du tableau
donné.

Exemple:

mulByLen([1, 1, 1]) ➞ [ 3, 3, 3 ]

mulByLen([1, 2, 3]) ➞ [ 3, 6, 9 ]

mulByLen([0, 0, 0, 0, 2]) ➞ [ 0, 0, 0, 0, 10 ]

Corrigé

Solution:

function mulByLen(tab) {
return tab.map(x => x * tab.length);

}
 

Exercice 8:
Créez une fonction pour supprimer toutes les valeurs nulles d’un tableau.

Exemple:

deleteNull(["Alex", null, "Emily", "Bob"]) ➞ ["Alex", "Emily", "Bob"]

deleteNull([0, 1, null, 2, null, 3]) ➞ [0, 1, 2, 3]

deleteNull([null, null, null]) ➞ []

Corrigé

Solution:

function deleteNull(tab) {

return tab.filter(i => i !== null)

}
 

Exercice 9:
Une année bissextile a un jour ajouté à février pour être synchronisée avec l’année
saisonnière. Une année bissextile apparaît avec une fréquence régulière, déterminée par la
règle ci-dessous:

Une année doit être divisible par 400 ou divisible par 4 et non pas 100.

Vous devez implémenter une fonction qui renvoie TRUE si c’est une année bissextile, ou
FALSE si ce n’est pas le cas.

Exemple:

bissextile(2020) ➞ true

// Divisé par 4 et non par 100.


bissextile(1200) ➞ false

// Divisé par 4, mais également divisé par 100.

bissextile(2000) ➞ true

// Divisé par 400.

Corrigé

Solution:

function bissextile(year) {

return year %400 === 0 || year %4 === 0 && year %100 !== 0;

Exercice 1:
Créez une fonction qui trouve tous les nombres pairs de 1 au nombre donné.

Exemple:

nbrPaire(6) ➞ [2, 4, 6]

nbrPaire(4) ➞ [2, 4]

nbrPaire(2) ➞ [2]

Corrigé

Solution:

function nbrPaire(n) {
let paire = [];

for (let i = 1; i <= n; i++) {

if (i % 2 === 0) {

paire.push(i);

return paire;

}
 

Exercice 2:
Écrivez une fonction qui renvoie TRUE si tous les caractères d’une chaîne sont identiques,
sinon renvoie FALSE.

Exemple:

isSame("bbbbbb") ➞ true

isSame("abababab") ➞ false

isSame("111111") ➞ true

Corrigé

Solution:

function isSame(str) {

return new Set([...str]).size === 1;

}
 

Exercice 3:
Vous avez un tableau de nombre, transformez ce tableau en miroir.

Exemple:
miroir([1, 2, 3]) ➞ [1, 2, 3, 2, 1]

miroir([9, 8, 7]) ➞ [9, 8, 7, 8, 9]

miroir([10, 20]) ➞ [ 10, 20, 10 ]

Corrigé

Solution:

function miroir(tab) {

return [...tab, ...tab.splice(0, tab.length - 1).reverse()]

}
 
 

Exercice 4:
Écrivez une fonction récursive qui trouve la somme des n premiers nombres naturels.

Exemple:

somme(3) ➞ 6

// 1 + 2 + 3 = 6

somme(2) ➞ 3

somme(10) ➞ 55

Corrigé

Solution:

function somme(n) {

if (n == 0) {
return n;

return n + somme(n - 1);

}
 

Exercice 5:
Créez une fonction pour extraire le nom du catégorie de son URL.

Exemple:

getCategory("https://waytolearnx.com/html/") ➞ "html"

getCategory("https://waytolearnx.com/css/") ➞ "css"

getCategory("https://waytolearnx.com/javascript/") ➞ "javascript"

Corrigé

Solution:

function getCategory(url) {

return url.split("/")[3]

}
 

Exercice 6:
Écrivez une fonction qui renvoie TRUE si un objet est vide, sinon renvoie FALSE.

Exemple:

isObjEmpty({ a: 1, b: 2 }) ➞ false

isObjEmpty({ a: 1 }) ➞ false
isObjEmpty({}) ➞ true

Corrigé

Solution:

function isObjEmpty(obj) {

return !Object.keys(obj).length

}
 
 

Exercice 7:
Écrivez une fonction qui récupère les n derniers éléments d’un tableau.

Exemple:

lastNitem([8, 1, 5, 2, 4, 9], 3) ➞ [2, 4, 9]

lastNitem([1, 2, 3], 1) ➞ [3]

lastNitem([1, 2, 3, 4], 10) ➞ "invalide"

lastNitem([1, 2, 3, 4], 0) ➞ []

Corrigé

Solution:

function lastNitem(t, n) {

return n <= t.length ? t.slice(t.length-n, t.length) : "invalide";

}
 
Exercice 8:
Écrivez une fonction qui supprime toutes les caractères spéciaux dans une chaîne.

Exemple:

removeSpecialChar("@W*-a?;+y!°T-8o_&L?e!=r%$n<X") ➞ "WayToLearnX"

removeSpecialChar(",A@[L]?e*$!x") ➞ "ALex"

removeSpecialChar("$*;H[!e&}l]l@{^.o") ➞ "Hello"

Corrigé

Solution:

function removeSpecialChar(str) {

return str.replace(/[^a-z]/gi, '');

}
 

Exercice 9:
Écrivez une fonction qui renvoie TRUE si un nombre est un palindrome.

Exemple:

checkPalindrome(212) ➞ true

checkPalindrome(123) ➞ false

checkPalindrome(75257) ➞ true

Solution:

function checkPalindrome(n) {
return String(n).split('').reverse().join('') == String(n);
}
 

Exercice 1:
La distance de Hamming est le nombre de caractères qui diffèrent entre deux chaînes. Prenons
un exemple :

Str1: « abcdde »
Str2: « abcdbe »

Distance de Hamming = 1 « d » et « b » est la seule différence.

Créez une fonction qui calcule la distance de hamming entre deux chaînes.

Exemple:

distanceHamming("abcdde", "abcdbe") ➞ 1

distanceHamming("abefcd", "cdfgea") ➞ 6

distanceHamming("agresser", "adresser") ➞ 1

distanceHamming("attention", "intention") ➞ 2

Corrigé

Solution:
#YouTube aurait mis en place un nou...
Replay

Unmute

Loaded: 100.00%

Remaining Time -0:00

Fullscreen

#YouTube aurait mis en place un nouveau système empêchant l'utilisation de l'extension #AdBlock

function distanceHamming(str1, str2) {


return [...str1].filter((x, i) => x != str2[i]).length

}
 

Exercice 2:
Créez une fonction qui prend un tableau de nombres et renvoie le minimum et le maximum
dans un tableau [Min, Max].

Exemple:

getMinMax([8, 1, 9, 2, 6]) ➞ [1, 9]

getMinMax([22, 2]) ➞ [2, 22]

getMinMax([5]) ➞ [5, 5]

Corrigé

Solution:

function getMinMax(tab) {

return [Math.min(...tab), Math.max(...tab)];

}
 

Exercice 3:
Créez une fonction qui compte le nombre de majuscules dans une chaîne de caractères.

Exemple:

countMaj("abcdEFG") ➞ 3

countMaj("WayToLearnX") ➞ 4

countMaj("abcdefghigklmnopkrstvuwxyz") ➞ 0
Corrigé

Solution:

function countMaj(str) {

return str.split(/[A-Z]/).length - 1;

}
 
 

Exercice 4:
Créez une fonction qui compte le nombre de syllabes d’un mot. Chaque syllabe est séparée
par un tiret -.

Exemple:

nbrOfSlab("prin-temps") ➞ 2

nbrOfSlab("ar-rê-te") ➞ 3

nbrOfSlab("ther-mo-mè-tre") ➞ 4

Corrigé

Solution:

function nbrOfSlab(str) {

return str.split("-").length;

}
 

Exercice 5:
Implémenter une fonction qui renvoie la distance donnée en kilomètres convertie en miles.
Vous devez arrondir le résultat jusqu’au quatrième chiffre décimal.

Exemple:

toMiles(5) ➞ 3.1069
toMiles(7) ➞ 4.3496

toMiles(10) ➞ 6.2137

Corrigé

Solution:

function toMiles(km) {

return parseFloat((km * 0.621371).toFixed(4))

}
 

Exercice 6:
Créez une fonction qui prend un nombre (de 1 à 12) et renvoie son nom de mois
correspondant sous forme de chaîne. Par exemple, si on vous donne 4 en entrée, votre
fonction devrait retourner Avril, car Avril est le 4ème mois.

Nombre Nom du mois

1 Janvier

2 Février

3 Mars

4 Avril

5 Mai

6 Juin

7 Juillet

8 Août

9 Septembre

10 Octobre

11 Novembre

12 Décembre
Exemple:

nomDuMois(3) ➞ "Mars"

nomDuMois(12) ➞ "Décembre"

nomDuMois(6) ➞ "Juin"

Corrigé

Solution:

function nomDuMois(n) {

const mois = {

1: 'Janvier',

2: 'Février',

3: 'Mars',

4: 'Avril',

5: 'Mai',

6: 'Juin',

7: 'Juillet',

8: 'Août',

9: 'Septembre',

10: 'Octobre',

11: 'Novembre',

12: 'Décembre'

};

return mois[n];

}
 
 

Exercice 7:
Créez une fonction qui renvoie « Majuscule » si toutes les lettres d’un mot sont en
majuscules, « Minuscule » si toutes les lettres d’un mot sont en minuscule et « Mix » s’il
contient à la fois des majuscules et des minuscules.

Exemple:

caseOf("WAYTOLEARNX") ➞ "Majuscule"

caseOf("waytolearnx") ➞ "Minuscule"

caseOf("WayToLearnX") ➞ "Mix"

Corrigé

Solution:

function caseOf(str) {

return str === str.toUpperCase() ? 'Majuscule' :

str === str.toLowerCase() ? 'Minuscule' : 'Mix';

}
 

Exercice 8:
Le temps a un format: heures:minutes. Les heures et les minutes ont deux chiffres, comme
07:00. Ecrivez l’expression régulière pour trouver le temps(heures:minutes) dans la chaîne.

Exemple:

"Le restaurant ouvre à 08:00 situé au boulevard du 200:200" ➞ "08:00"

"J'ai pris mon déjeuner à 10:30." ➞ "10:30"


"Je vais aller au cinéma demain à 18:00 du soir. ➞ "18:00"

Corrigé

Solution:

var expr = /\d{2}\:\d{2}/


 

Exercice 9:
Écrivez une fonction qui prend un nombre binaire de 8 bits sous forme de tableau et
convertissez-le en décimal.

Exemple:

binToDec([0, 0, 0, 1, 1, 1, 1, 1]) ➞ 31

binToDec([0, 0, 0, 0, 0, 0, 0, 1]) ➞ 1

binToDec([1, 0, 0, 0, 0, 0, 0, 0]) ➞ 128

Corrigé

Solution:

function binToDec(tab) {

return parseInt(tab.join(""), 2);

Exercice 1:
Un palindrome est un mot qui s’écrit de la même manière après l’inversion de ce dernier.
‘ada’ est un palindrome. Écrivez une méthode qui vérifie si une chaîne est un palindrome.

Exemple:
isPalindrome("NON") ➞ true

isPalindrome("TOTO") ➞ false

isPalindrome("SOS") ➞ true

isPalindrome("SELLES") ➞ true

Corrigé

Solution:

function isPalindrome(str) {

return [...str].reverse().join("") == str

}
 

Exercice 2:
Écrivez une fonction qui prend deux nombres et renvoie s’ils doivent être additionnés,
soustraits, multipliés ou divisés pour obtenir 8. Si aucune des opérations ne peut donner 8,
retournez NULL.

Exemple:

operation(4, 4) ➞ "additionner"

operation(10, 2) ➞ "soustraire"

operation(32, 4) ➞ "diviser"

operation(6, 6) ➞ NULL
Corrigé

Solution:

function operation(n1, n2) {

if (n1 + n2 === 8) {

return 'additionner';

} else if (n1 * n2 === 8) {

return 'multiplier';

} else if (n1 - n2 === 8) {

return 'soustraire';

} else if (n1 / n2 === 8) {

return 'diviser';

} else {

return null;

}
 

Exercice 3:
Vous avez embauché trois commerciales et vous les payez. Créez une fonction qui prend trois
nombres (le salaire horaire de chaque commerciale) et renvoie la différence entre le
commerciale le mieux payé et le moins payé.

Exemple:

getDiff(200, 10, 90) ➞ 190

//200 - 10 = 190

getDiff(56, 29, 16) ➞ 40

getDiff(2, 10, 5) ➞ 8
Corrigé

Solution:

function getDiff(c1, c2, c3) {

return Math.max(...arguments) - Math.min(...arguments)

}
 
 

Exercice 4:
Vous avez un tableau de nombres, créez une fonction qui renvoie le même tableau mais avec
l’index de chaque élément dans le tableau ajouté à lui-même. Cela signifie que vous ajoutez 0
au nombre à l’index 0, ajoutez 1 au nombre à l’index 1, ajoutez 2 au nombre à l’index 2 etc …

Exemple:

addIndexeToElem([0, 0, 0, 0]) ➞ [0, 1, 2, 3]

addIndexeToElem([2, 1, 0, 1]) ➞ [2, 2, 2, 4]

addIndexeToElem([9, 8, 7, 6]) ➞ [9, 9, 9, 9]

Corrigé

Solution:

function addIndexeToElem(tab) {

return tab.map((val,i) => val + i);

}
 

Exercice 5:
Créez une fonction qui prend une chaîne et renvoie une chaîne avec des espaces entre tous les
caractères.

Exemple:

addSpace("waytolearnx") ➞ "w a y t o l e a r n x"


addSpace("Hello BoB") ➞ "H e l l o B o B"

addSpace("Thank you") ➞ "T h a n k y o u"

Corrigé

Solution:

function addSpace(str) {

return [...str].join(' ');

}
 

Exercice 6:
Vous avez un tableau de boissons, chaque boisson étant un objet avec deux propriétés: nom et
prix. Créez une fonction qui a le tableau des boissons comme argument et retournez l’objet
boissons trié par prix dans l’ordre croissant.

Supposons que le tableau d’objets de boisson suivant doit être trié:

boissons = [

{nom: "citron", prix: 50},

{nom: "menthe", prix: 35},

{nom: "fraise", prix: 5}

La sortie de l’objet boissons triées sera:

Exemple:

sortByPrice(boissons) ➞ [

{nom: "fraise", prix: 5},


{nom: "menthe", prix: 35},

{nom: "citron", prix: 50}

Corrigé

Solution:

function sortByPrice(boissons) {

return boissons.sort((a, b) => a.prix - b.prix);

}
 
 

Exercice 7:
Un nombre uniforme est un nombre positif composé du même chiffre.

Créez une fonction qui prend un entier et retourne s’il s’agit d’un nombre uniforme ou non.

Exemple:

isUniforme(444) ➞ true

isUniforme(-444) ➞ false

isUniforme(0) ➞ true

Corrigé

Solution:

function isUniforme(n) {

return new Set('' + n).size === 1

}
 

Exercice 8:
Avec deux chaînes, créez une fonction qui renvoie le nombre total de caractères uniques de la
chaîne concaténée.

Exemple:

uniqueChr("attention", "intention") ➞ 6

// "attentionintention" a 6 caractères uniques:

// "a", "t", "e", "n", "i", "o"

uniqueChr("plus", "tous") ➞ 6

uniqueChr("bis", "lis") ➞ 4

Corrigé

Solution:

function uniqueChr(s1, s2) {

return new Set(s1 + s2).size;

}
 

Exercice 9:
Écrivez une fonction récursive qui trouve la somme d’un tableau.

Exemple:

somme([1, 2, 3]) ➞ 6

somme([1, 2]) ➞ 3

somme([]) ➞ 0

Corrigé
Solution:

function somme(tab) {

if(tab.length === 0)

return 0;

else

return tab.pop() + somme(tab);

Exercice 1:
Créez une fonction qui accepte deux paramètres et, si les deux paramètres sont des chaînes,
additionnez-les comme s’ils étaient des entiers ou si les deux paramètres sont des entiers,
concaténez-les.

Exemple:

add("2", "3") ➞ 5

add(2, 3) ➞ "23"

add("2", 3) ➞ null

Corrigé

Solution:

function add(a, b) {

if (typeof a !== typeof b)

return null;

if (typeof a === 'string')


return Number(a) + Number(b);

return `${a}${b}`;

}
 

Exercice 2:
Créez une fonction qui renvoie le produit de tous les entiers impairs dans un tableau.

Exemple:

prodImp([1, 2, 3, 4]) ➞ 3

prodImp([3, 6, 8, 5, 5, 7]) ➞ 525

prodImp([1, 0, 1, 0, 1, 0]) ➞ 1

Corrigé

Solution:

function prodImp(tab) {

return tab.filter(i => i % 2 !== 0).reduce((a,b) => a * b);

}
 

Exercice 3:
Créez une fonction qui répète chaque caractère dans une chaîne n fois.

Exemple:

repeatChr("alex", 3) ➞ "aaallleeexxx"

repeatChr("waytolearnx", 1) ➞ "waytolearnx"
repeatChr("bob", 2) ➞ "bboobb"

Corrigé

Solution:

function repeatChr(str, n) {

return str

.split('')

.map(c => c.repeat(n))

.join('');

}
 
 

Exercice 4:
Vous avez un tableau avec des mots aléatoires, mais votre programme n’accepte pas les mots
commençant par la lettre majuscule « Z ». Supprimez les mots non acceptés et renvoyez le
nouveau tableau.

Exemple:

filterWords(["Bob", "Alex", "Zoello"]) ➞ ["Bob", "Alex"]

filterWords(["Lion", "Zebra", "Gazelle"]) ➞ ["Lion", Gazelle"]

filterWords(["Mercedes", "Bmw", "Audi"]) ➞ ["Mercedes", "Bmw", "Audi"]

Corrigé

Solution:

function filterWords(tab) {

return tab.filter(str => /^[^Z]/.test(str))

}
 

Exercice 5:
Écrivez une fonction qui prend un tableau d’éléments et ne renvoie que les entiers.

Exemple:

getInt([1, 2, "3", "4", "5", 6]) ➞ [1, 2, 6]

getInt(["Vache", 20, "Cheval", 1, "Poule", 50]) ➞ [20, 1, 1]

getInt(["Str", false, 5.56, 6]) ➞ [6]

Corrigé

Solution:

function getInt(tab) {

return tab.filter(Number.isInteger);

}
 

Exercice 6:
Créez une fonction qui convertit deux tableaux de coordonnées x et y en un tableau de
coordonnées (x, y).

Exemple:

convert([0, 2, 5], [8, 6, 9]) ➞ [ [ 0, 8 ], [ 2, 6 ], [ 5, 9 ] ]

convert([2, 2], [4, 8]) ➞ [ [ 2, 4 ], [ 2, 8 ] ]

convert([1], [2]) ➞ [ [ 1, 2 ] ]

Corrigé

Solution:
function convert(tabX, tabY) {

return tabX.map((ix, iy) => [ix, tabY[iy]])

}
 
 

Exercice 7:
Créez une fonction qui remplace toutes les voyelles d’une chaîne par un caractère spécifié.

Exemple:

replaceVoyel("voyelle", "$") ➞ "v$y$ll$"

replaceVoyel("boulevard", "?") ➞ "b??l?v?rd"

replaceVoyel("bouche", "@") ➞ "b@@ch@"

Corrigé

Solution:

function replaceVoyel(str, c) {

return str.replace(/[aeoiu]/g, c);

}
 

Exercice 8:
Créez une fonction pour calculer le déterminant d’une matrice 2 x 2.

[[a, b],

[c, d]]

Le déterminant de la matrice ci-dessus est: ad – bc:

Exemple:
det([

[1, 1],

[2, 3]

]) ➞ 1

det([

[6, 4],

[2, 3]

]) ➞ 10

det([

[2, 4],

[4, 2]

]) ➞ -12

Corrigé

Solution:

function det(matrice) {

return (matrice[0][0]*matrice[1][1] - matrice[1][0]*matrice[0][1]);

}
 

Exercice 9:
Écrivez une fonction qui renvoie l’extension des fichiers.

Exemple:

getExtension(["file.html", "file.js"]) ➞ ["html", "js"]


getExtension(["image.jpg", "image.png", "image.gif"]) ➞ ["jpg", "png", "gif"]

getExtension(["file.pdf", "file.txt", "file.docx"]) ➞ ["pdf", "txt", "docx"]

Corrigé

Solution:

function getExtension(files) {

return files.map(file => file.split(".").pop())

Vous aimerez peut-être aussi