Opérateur modulo(%) en JavaScript

Harshit Jindal 12 octobre 2023
  1. Opérateur de reste % en JavaScript
  2. Exemple d’utilisation de l’opérateur de reste % en JavaScript
  3. Applications
Opérateur modulo(%) en JavaScript

Ce tutoriel apprend à utiliser l’opérateur modulo % en JavaScript.

Opérateur de reste % en JavaScript

Il donne le reste quand un nombre (dividende) est divisé par un autre nombre (diviseur). Cet opérateur n’est pas le même que l’opérateur modulo dans d’autres langues car il a un but différent. Leurs résultats ne sont les mêmes que pour un dividende positif, mais si nous avons un dividende négatif a et qu’un opérateur modulo est appliqué dessus, alors les résultats seront complètement différents. Le résultat obtenu par l’expression ( (a % n) + n) % n en utilisant l’opérateur reste en JavaScript est le même que le résultat obtenu en utilisant l’opérateur modulo dans a % n.

Exemple d’utilisation de l’opérateur de reste % en JavaScript

Modulo avec dividende positif

1 % -2   //  1
2 % 3    //  2
5.5 % 2  // 1.5
12 % 5   //  2
1 % 2    //  1

Reste avec dividende négatif

-12 % 5      // -2
    - 1 % 2  // -1
    - 4 % 2  // -0

Reste avec NaN

NaN % 2  // NaN

Reste avec l’infini

Infinity % 2         // NaN
Infinity % 0         // NaN
Infinity % Infinity  // NaN

Applications

Un nombre est-il pair ou impair?

On peut vérifier si un entier est pair en vérifiant s’il est divisible par 2. Nous pouvons utiliser la valeur de retour de l’opérateur modulo. Si c’est 0, cela signifie que le nombre est pair.

function isEven(n) {
  return n % 2 === 0;
}

isEven(6);  // true
isEven(3);  // false

La partie fractionnaire d’un nombre

Nous pouvons le faire simplement en calculant n % 1.

function getFractionalPart(n) {
  return n % 1;
}

getFractionalPart(2.5);  // 0.5

Convertir des minutes en heures

Lorsqu’on donne un nombre n qui représente le nombre de minutes et que nous voulons le convertir en heures et minutes, nous pouvons utiliser l’opérateur modulo.

const minutesToHoursAndMinutes = n =>
    ({hours: Math.floor(n / 60), minutes: n % 60});

minutesToHoursAndMinutes(123);  // { hours: 2, minutes: 3 }
Harshit Jindal avatar Harshit Jindal avatar

Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.

LinkedIn

Article connexe - JavaScript Operator