Когда вы впервые изучали деление, вы, вероятно, много работали с остатками. В математике остаток — это остаточное значение, которое нельзя разделить без остатка на делитель. Вы можете вспомнить, как работали, видя такие проблемы и решения:
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; }
Наличие таких операторов, как модуль, в вашем поясе с инструментами поможет вам быстро и эффективно решать проблемы в будущем.
Удачного кодирования!