JavaScript : rendre le Web interactif (école d'ingénieur) · Chapitre 5 · Application directe du cours
Clé de contrôle d'un ISBN
Tableaux et objets · niveau 2
Énoncé
Le treizième chiffre d'un ISBN-13 est une clé de contrôle : on multiplie les douze premiers chiffres alternativement par 1 et par 3 (le premier par 1), on additionne, et la clé est ce qu'il faut ajouter à cette somme pour atteindre le multiple de 10 suivant (0 si la somme en est déjà un).
- Écrire
cleIsbn(douzeChiffres), sans boucle écrite à la main, avecmapetreduce. Calculer la clé de978295630001. - Écrire
isbnValide(isbn), qui accepte des tirets (978-2-9563-0001-4).
Corrigé
// Chiffre de contrôle d'un ISBN-13 : on pondère les 12 premiers chiffres par
// 1, 3, 1, 3…, et le 13e complète la somme au multiple de 10 supérieur.
export function cleIsbn(douzeChiffres) {
const somme = [...douzeChiffres]
.map(Number)
.reduce((s, chiffre, i) => s + chiffre * (i % 2 === 0 ? 1 : 3), 0);
return (10 - (somme % 10)) % 10;
}
export function isbnValide(isbn) {
const chiffres = isbn.replaceAll("-", "");
return /^\d{13}$/.test(chiffres) && cleIsbn(chiffres.slice(0, 12)) === Number(chiffres[12]);
}
console.log(cleIsbn("978295630001"));
console.log(isbnValide("978-2-9563-0001-4"), isbnValide("9782956300015"), isbnValide("97829"));
4
true false false
Pour 978295630001 : , et . [...chaine] découpe la chaîne en caractères, map(Number) les convertit en nombres, et l'indice fourni à reduce choisit le poids. Le dernier modulo donne 0 quand la somme est déjà un multiple de
- L'expression régulière vérifie qu'il reste exactement treize chiffres.
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.