Aller au contenu
M05 · B. Acquérir les fondamentaux de JavaScript

Les objets natifs : Date, Math, RegExp et JSON

Utiliser les objets fournis par JavaScript pour manipuler des dates, faire des calculs et des tirages au hasard, vérifier un format avec une expression régulière, et convertir des données en JSON.

1Situer

Une auto-école de Fès prépare une page pour ses candidats : la date de l'examen et le nombre de jours restants, un quiz qui tire des questions au hasard, la vérification du numéro de téléphone, et l'enregistrement des réponses sous forme de texte. JavaScript fournit déjà des objets pour tout cela.

2Comprendre

JSON : plier un objet en texte, et le déplier
OBJET (mémoire) candidat: 'Salma' bonnes: 36 total: 40 stringify TEXTE JSON {"candidat":"Salma",  "bonnes":36,"total":40} serveur (AJAX) localStorage JSON.parse relu (nouvel objet) candidat: 'Salma' bonnes: 36 relu.bonnes → 36

En mémoire, reponses est un objet JavaScript : on peut lire reponses.bonnes.

1 / 5

Date

const maintenant = new Date();               // date et heure actuelles
const examen = new Date(2027, 2, 15);        // 15 mars 2027 (mois de 0 à 11)
examen.getFullYear()   // 2027
examen.getMonth()      // 2 (mars)
examen.getDate()       // 15 (jour du mois)
examen.getDay()        // 1 (lundi ; 0 = dimanche)
examen.toLocaleDateString('fr-MA')  // "15/03/2027"
examen - maintenant    // différence en millisecondes

Math

MéthodeRésultat
Math.round(4.5)5 (arrondi)
Math.floor(4.9) / Math.ceil(4.1)4 / 5
Math.max(...notes) / Math.min(...)le plus grand / le plus petit
Math.random()entre 0 et 1
Math.sqrt(16), Math.pow(2, 3), Math.abs(-3)4, 8, 3
Math.PI3.14159…

Les trois points ...notes « étalent » le tableau en plusieurs arguments.

Les expressions régulières (RegExp)

Une expression régulière décrit un format de texte.

const motif = /^0[67][0-9]{8}$/;   // 06 ou 07, puis 8 chiffres
motif.test('0612345678')           // true
'Fès, Rabat'.replace(/,\s*/, ' et ')  // "Fès et Rabat"
SymboleSens
^ / $début / fin du texte
[0-9], \dun chiffre
[a-z]une lettre minuscule
{8}, {2,}exactement 8 fois, au moins 2 fois
+, *, ?1 ou plus, 0 ou plus, 0 ou 1
i (après le /)sans tenir compte des majuscules

JSON

JSON (JavaScript Object Notation) est un format texte pour échanger des données : clés entre guillemets doubles, pas de fonctions ni de commentaires.

JSON.stringify(objet)   // objet → texte  (pour envoyer ou enregistrer)
JSON.parse(texte)       // texte → objet  (pour lire ce qu'on reçoit)

C’est le format des API (partie E) et celui qu’on range dans localStorage.

Exemple simple

Le calendrier et la calculatrice déjà fournis

Pas besoin de fabriquer un calendrier ou une calculatrice scientifique : Date et Math sont livrés avec JavaScript, comme l'horloge et la calculatrice de votre téléphone.

new Date().getFullYear();          // l'année en cours
Math.round(4.6);                   // 5
Math.floor(Math.random() * 6) + 1; // un dé : 1 à 6
Exemple simple

La valise pour voyager

Pour envoyer un objet au serveur ou le garder dans le navigateur, on le plie en texte (JSON.stringify), comme des habits dans une valise ; à l'arrivée, on le déplie (JSON.parse).

const texte = JSON.stringify({ nom: 'Ali', score: 18 });
// '{"nom":"Ali","score":18}'
JSON.parse(texte).score;   // 18

3Manipuler

Complétez la page du candidat en utilisant Date, Math, une expression régulière et JSON. Les résultats s'affichent dans la page et la console.
Ouvrir dans le lab ↗
Console
  • Avec Math.max, affichez la meilleure note blanche dans la console (38)
  • Affichez la moyenne arrondie avec Math.round dans la console (34)
  • Testez le numéro avec motif.test(numero) et affichez dans #tel « Numéro valide »
  • Tirez un dé (entier de 1 à 6 avec Math.random) et affichez « Dé : ... » dans #de
  • Convertissez reponses en JSON et affichez le texte dans la console

4Pratiquer

Exercice 1 · Les jours restants

Calculez le nombre de jours entre aujourd'hui et la date de l'examen.

Voir un indice

La différence de deux dates donne des millisecondes.

Voir le corrigé
const aujourdHui = new Date();
const examen = new Date(2027, 2, 15);
const ms = examen - aujourdHui;
const jours = Math.ceil(ms / (1000 * 60 * 60 * 24));
console.log(`Plus que ${jours} jours`);

Exercice 2 · Vérifier un e-mail et une immatriculation

Écrivez une expression régulière simple pour (1) un e-mail ; (2) un code postal marocain à 5 chiffres.

Voir le corrigé
const email = /^[^\s@]+@[^\s@]+\.[a-z]{2,}$/i;
const codePostal = /^[0-9]{5}$/;
email.test('salma@gmail.com');   // true
codePostal.test('30000');        // true (Fès)

Exercice 3 · Enregistrer dans le navigateur

Enregistrez l'objet reponses dans le localStorage du navigateur, puis relisez-le.

Voir le corrigé
localStorage.setItem('reponses', JSON.stringify(reponses));
const relu = JSON.parse(localStorage.getItem('reponses'));
console.log(relu.bonnes); // 36
// localStorage ne stocke que du texte : d'où JSON.

5Vérifier

1. Que renvoie new Date(2027, 0, 1) ?
2. Comment obtenir un entier au hasard entre 1 et 10 ?
3. Que fait JSON.parse ?