Когда вы впервые изучали деление, вы, вероятно, много работали с остатками. В математике остаток — это остаточное значение, которое нельзя разделить без остатка на делитель. Вы можете вспомнить, как работали, видя такие проблемы и решения:

11 ÷ 5 = 2 r 1

Если мы разделим одиннадцать на пять групп, мы можем поместить по два в каждую группу с одним остатком. Это наш остаток.

Позже учащиеся узнают о десятичных дробях, а остальное в значительной степени забывается. Однако в программировании остаток может быть весьма полезен. Мы можем быстро и легко найти остаток от деления, используя остаток оператор или модуль: %.

Допустим, у меня есть массив и я хочу вернуть все четные числа. Возможно, вы помните, что четные числа делятся на два или, по-другому, делятся на два без остатка. Давайте посмотрим, как мы можем использовать модуль, чтобы вычислить, является ли число четным.

2 % 2 – это операция, возвращающая остаток от 2÷2. Поскольку 2÷2 равно 1 без остатка или остатку 0, возврат равен 0.

Если мы попробуем с числом, которое, как мы знаем, является нечетным, результат будет другим. 3 % 2 равно 1 остатку 1, поэтому возврат равен 1.

2 ÷ 2 = 2 r 0
2 % 2 = 0
3 ÷ 2 = 2 r 1
3 % 2 = 1

Если число делится на два, то x % 2 будет равно 0. Имея это в виду, мы можем написать функцию, которая перебирает массив и использует модуль, чтобы проверить, является ли каждое число четным.

evenNumbers = (arr) => {
  let evenArr = []; //Declare an empty array
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] % 2 === 0) { //Checks if number is even
      evenArr.push(arr[i]); //Push even numbers to our array
    }
  }
  return evenArr; // Return the even array
}

Примечание. Я использую стрелочную нотацию ES6 для функций: нажмите здесь для объяснения.

Вы можете использовать модуль для проверки кратности любого числа. Если одно число делится на другое без остатка, то остаток всегда будет равен нулю.

Недавно я проходил техническое собеседование, и меня попросили просуммировать все числа, кратные трем и пяти, которые были больше нуля, но меньше 1000. Используя модуль, я быстро смог написать функцию, возвращающую ответ:

sumMultiplesOfThreeAndFive = () => {
  let sum = 0;
  for (let i = 0; i < 1000; i++) {
    if (i % 3 === 0 || i % 5 === 0) {
      sum += i;
    }
  }
  return sum;
}

Наличие таких операторов, как модуль, в вашем поясе с инструментами поможет вам быстро и эффективно решать проблемы в будущем.

Удачного кодирования!