Exercices JavaScript : les tableaux
Exercices JavaScript - Les tableaux
Voici plusieurs exercices pour vous familiariser avec les tableaux en JavaScript.
Le prototype Array
Les tableaux, en JavaScript, appartiennent au prototype Array.
Ce prototype propose tout un ensemble de méthodes pour travailler avec les tableaux. Certaines sont font “muter” le tableau sur lequel elles s’appliquent, tandis que d’autres vont retourner un nouveau tableau.
Par exemple, la méthode push
permet d’insérer un nouvel objet à la fin d’un tableau. On dit que la méthode fait “muter” le tableau, puisque son état va changer après l’appel de push
.
À l’inverse, la méthode filter
ne modifiera pas le tableau, mais en retournera un nouveau.
Exercice I - Création d’un tableau
- Déclarez un tableau contenant 10 nombres, de 0 à 9 ;
- Déclarez un deuxième tableau contenant 100 nombres, de 0 à 99.
Correction
// On peut déclarer un tableau de deux manières :
const t = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
const t2 = Array.from(1, 2, 3, 4, 5, 6, 7, 8, 9);
// Pour déclarer un tableau contenant 100 nombres, on ne va pas tout écrire :
const t3 = [];
for (let i = 0; i < 100; i++) {
t3.push(i);
}
Exercice II - Générer un tableau
- Implémentez une fonction qui génère un tableau de
n
nombres, de0
à(n - 1)
; - Implémentez une deuxième fonction, qui cette fois génère un tableau de
n
nombres entiers aléatoires ; - Implémentez désormais une troisième fonction qui, cette fois, génère un tableau de
n
nombres aléatoires entre0
etn
; - Implémentez, enfin, une fonction qui génère un tableau de
n
nombres aléatoires entre deux valeursmin
etmax
.
Correction
// Implémentez une fonction qui génère un tableau de n nombres, de 0 à (n - 1) :
function generateArrayWithNNumbers(n) {
const t = [];
for (let i = 0; i < n; i++) {
t.push(i);
}
return t;
}
// Implémentez une deuxième fonction, qui cette fois génère un tableau de n nombres entiers aléatoires
function generateArrayWithNRandomNumbers(n) {
const t = [];
for (let i = 0; i < n; i++) {
const randomNumber = Math.floor(Math.random() * 100);
t.push(randomNumber);
}
return t;
}
// Implémentez désormais une troisième fonction qui, cette fois, génère un tableau de n nombres aléatoires entre 0 et n
function generateArrayWithNRandomNumbersBetween0AndN(n) {
const t = [];
for (let i = 0; i < n; i++) {
const randomNumber = Math.floor(Math.random() * (n + 1));
t.push(randomNumber);
}
return t;
}
// Implémentez, enfin, une fonction qui génère un tableau de n nombres aléatoires entre deux valeurs min et max.
function generateArrayWithNRandomNumbersBetweenMinAndMax(n, min, max) {
const t = [];
for (let i = 0; i < n; i++) {
const randomNumber = Math.floor(Math.random() * (max + 1 - min) + min);
t.push(randomNumber);
}
return t;
}
Exercice III - sort
- Implémentez une fonction qui génère un tableau de
n
nombres aléatoires, entre deux valeursmin
etmax
, et qui soit trié de manière ascendante ;- faites une solution sans la méthode
sort
; - faites une solution avec la méthode
sort
.
- faites une solution sans la méthode
Correction
// avec .sort()
function sortNumbersArrayAsc(array) {
return array.sort((a, b) => a - b);
}
// sans .sort()
function sortNumbersArrayAsc2(array) {
const sortedArray = [];
const copiedArray = [...array];
const length = array.length;
for (; sortedArray.length < length;) {
const idx = findIdxOfMin(copiedArray);
sortedArray.push(copiedArray[idx]);
copiedArray.splice(idx, 1);
}
return sortedArray;
}
function findIdxOfMin(array) {
let idx = 0;
for (let i = 0; i < array.length; i++) {
if (array[i] < array[idx]) {
idx = i;
}
}
return idx;
}
Exercice IV - map
- Implémentez une fonction qui prend en paramètre un tableau de nombres et qui retourne un nouveau tableau tel que, pour tout élément
x
du tableau, on aitx²
; - Implémentez une fonction qui prend en paramètre un tableau de prénoms et qui retourne un nouveau tableau tel que, pour tout prénom
p
du tableau, la première lettre soit en majuscule et le reste en minuscules ; - Implémentez une fonction qui prend en paramètre un tableau d’objets
{firstname: 'un prénom', lastname: 'un nom'}
et qui retourne un nouveau tableau comprenant une liste de noms complets. Par exemple :[{firstname: 'John', lastname: 'Doe'}, {firstname: 'Jack', lastname: 'Doe'}]
deviendra['John Doe', 'Jack Doe']
.
Correction
function squareNumbers(numbers) {
return numbers.map(x => x*x);
}
function capitalizeFirstNames(firstNames) {
return firstNames.map(f => f.charAt(0).toUpperCase() + f.substring(1).toLowerCase())
}
function fullnames(names) {
return names.map(name => name.firstname + ' ' + name.lastname);
}
Exercice V - filter
- Implémentez une fonction qui filtre les valeurs
null
etundefined
de n’importe quel tableau et qui retourne un nouveau tableau filtré.
Correction
function filterNullAndUndefined(array) {
return array.filter(value => value !== null && value !== undefined);
}
Exercice VI - reduce
- Implémentez une fonction qui prend en paramètre un tableau de nombres et qui retourne la somme de tous ces nombres, sans utiliser de boucle
for
.
Correction
function sum(numbers) {
return sum.reduce((accumulator, currValue) => accumulator + currValue, 0);
}