Adloun

JavaScript : rendre le Web interactif (école d'ingénieur) · Chapitre 11 · Exercice de TD

Vérifier un ISBN

Erreurs, stockage et qualité du code · niveau 2

Énoncé

Un ISBN-13 compte 13 chiffres (tirets et espaces ignorés). Sa clé de contrôle : en pondérant les chiffres alternativement par 1 et 3 (en commençant par 1), la somme doit être un multiple de 10. Écrire analyserIsbn(texte), qui renvoie les 13 chiffres sans séparateur, ou lève une ErreurValidation (champ "isbn") avec un message qui dit ce qui ne va pas. L'essayer sur « 978-2-9563000-1-4 », « 978-2-9563000-1-5 », « 97829563 » et « 978 2 9563000 6 9 ».

Corrigé


export function analyserIsbn(texte) {
  const chiffres = texte.replaceAll("-", "").replaceAll(" ", "");
  if (!/^\d{13}$/.test(chiffres)) {
    throw new ErreurValidation("isbn", `« ${texte} » : un ISBN compte 13 chiffres`);
  }
  // Clé de contrôle : poids 1 et 3 alternés, la somme doit être un multiple de 10.
  let somme = 0;
  for (let i = 0; i < 13; i++) {
    somme += Number(chiffres[i]) * (i % 2 === 0 ? 1 : 3);
  }
  if (somme % 10 !== 0) {
    throw new ErreurValidation("isbn", `« ${texte} » : clé de contrôle incorrecte`);
  }
  return chiffres;
}

valide : 9782956300014
isbn : « 978-2-9563000-1-5 » : clé de contrôle incorrecte
isbn : « 97829563 » : un ISBN compte 13 chiffres
valide : 9782956300069

L'appelant teste e instanceof ErreurValidation pour afficher le message à côté du champ concerné, et relève toute autre erreur.

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →