Остаток от деления в JavaScript
- Как работает оператор %
- Деление без остатка
- Четные и нечетные числа
- Повторение по кругу
- Отрицательные числа
- Итого
Оператор % возвращает остаток от деления одного числа на другое.
console.log(10 % 3);
Результат:
1
Число 10 можно разделить на 3 три раза. Получится 9, а в остатке останется 1.
Как работает оператор %
Оператор % не показывает результат деления. Он показывает только то, что осталось после деления.
console.log(10 / 3);
console.log(10 % 3);
Результат:
3.3333333333333335
1
В первом случае мы делим число и получаем дробный результат. Во втором случае берем только остаток.
Еще несколько примеров:
console.log(8 % 2);
console.log(9 % 2);
console.log(15 % 4);
Результат:
0
1
3
Деление без остатка
Если остаток равен 0, значит число делится нацело.
let number = 12;
if (number % 3 === 0) {
console.log('Делится без остатка');
}
Такую проверку удобно использовать, когда нужно понять, можно ли разделить количество на равные части.
let apples = 10;
let boxes = 5;
if (apples % boxes === 0) {
console.log('Яблоки можно разложить поровну');
}
Четные и нечетные числа
Четное число делится на 2 без остатка.
let number = 8;
console.log(number % 2 === 0);
Результат:
true
Если остаток не равен 0, число нечетное.
let number = 7;
if (number % 2 !== 0) {
console.log('Нечетное число');
}
Повторение по кругу
Остаток от деления часто используют, когда значение должно повторяться по кругу.
Например, есть три цвета. Нужно выбирать следующий цвет по номеру элемента.
let colors = ['red', 'green', 'blue'];
for (let index = 0; index < 6; index++) {
let colorIndex = index % colors.length;
console.log(colors[colorIndex]);
}
Результат:
red
green
blue
red
green
blue
Когда index доходит до 3, выражение 3 % 3 возвращает 0. Поэтому выбор снова начинается с первого элемента массива.
Отрицательные числа
С отрицательными числами результат может выглядеть непривычно.
console.log(-5 % 2);
console.log(5 % 2);
Результат:
-1
1
В JavaScript знак остатка зависит от первого числа. Если первое число отрицательное, остаток тоже может быть отрицательным.
Если в задаче нужен всегда положительный индекс, например для массива, это нужно учитывать отдельно.
let length = 3;
let index = -1;
let safeIndex = ((index % length) + length) % length;
console.log(safeIndex);
Результат:
2
Такая запись сначала убирает лишние круги, потом сдвигает отрицательный результат в положительный диапазон.
Итого
Оператор % возвращает остаток от деления.
10 % 3возвращает1.- Если остаток равен
0, число делится без остатка. number % 2 === 0проверяет четное число.- Остаток удобно использовать для повторения значений по кругу.
- С отрицательными числами остаток может быть отрицательным.