> Сколько раз выполнится console.log в цикле с использованием оператора остатка от деления в JavaScript? (JavaScript)
Уровень: middle · Роль: frontend · Категория: Технические вопросы
Компании: TYMY
Стек: JavaScript
> Пример ответа
Короткий ответ
Количество выполнений console.log зависит от условия в цикле и оператора остатка от деления. В типичном примере for (let i = 0; i < 10; i++) { if (i % 2 === 0) console.log(i); } лог выполнится 5 раз - для чётных чисел от 0 до 8. Если условие другое, например i % 3 === 0, то будет 4 вызова. Точное число всегда равно количеству итераций, удовлетворяющих условию с остатком.
Подробное объяснение
Оператор % возвращает остаток от деления левого операнда на правый. В цикле он часто используется для фильтрации значений по кратности или чётности. Ключевой момент: console.log выполняется не на каждой итерации, а только когда условие с % истинно. Число выполнений = количество итераций, где i % N === 0 (или другое условие). Для диапазона от 0 до length - 1 это примерно Math.floor(length / N) + 1 (если начинаем с 0, так как 0 делится на любое число без остатка). Важно учитывать, что 0 % N === 0 всегда, поэтому первая итерация часто попадает в условие.
На практике
В реальном коде такие циклы встречаются при:
- выводе элементов через один (например, для стилизации)
- разбиении данных на группы по N элементов
- проверке кратности для бизнес-логики (например, каждые 5-й запрос)
- реализации пагинации или каруселей
Часто разработчики путаются, когда начинают счёт с 1 вместо 0 - тогда количество попаданий может отличаться на единицу. Также стоит помнить, что при отрицательных числах в JavaScript % возвращает отрицательный остаток, что может сломать условие === 0, если не использовать Math.abs().
Пример кода
JAVASCRIPT// Пример 1: чётные числа от 0 до 9let count = 0;for (let i = 0; i < 10; i++) {if (i % 2 === 0) {console.log(i); // 0, 2, 4, 6, 8 - 5 разcount++;}}console.log(count); // 5// Пример 2: кратность 3 от 1 до 10count = 0;for (let i = 1; i <= 10; i++) {if (i % 3 === 0) {console.log(i); // 3, 6, 9 - 3 разаcount++;}}console.log(count); // 3// Пример 3: с отрицательными числамиcount = 0;for (let i = -5; i < 5; i++) {if (i % 2 === 0) {console.log(i); // -4, -2, 0, 2, 4 - 5 разcount++;}}console.log(count); // 5
Как отвечать на собеседовании
Начните с уточнения: "Зависит от конкретного условия и диапазона". Затем приведите формулу: количество = число итераций, где i % N === 0. Объясните, что для диапазона от 0 до M это Math.floor(M / N) + 1. Покажите на примере с чётными числами. Если спросят про отрицательные - упомяните особенность JavaScript с отрицательным остатком. Не заучивайте ответ - покажите, как рассуждаете: разбиваете задачу на итерации и условие.
Что проверяет интервьюер
- Понимание работы оператора
%и его особенностей (включая отрицательные числа) - Умение анализировать циклы и условия
- Внимательность к границам диапазона (включительно/исключительно)
- Способность быстро подсчитать количество итераций без выполнения кода
- Знание, что
0 % N === 0- частая ловушка
Типичные ошибки
- Ответ "10 раз" без учёта условия - лог выполняется не на каждой итерации
- Забывают, что
0 % N === 0, и считают на единицу меньше - Путают
i % 2 === 0(чётные) сi % 2 === 1(нечётные) - Не учитывают, что при старте с 1 количество попаданий может быть меньше
- Думают, что
%работает как деление, а не как остаток - Игнорируют отрицательные числа, где
-4 % 2 === 0, но-3 % 2 === -1
> Похожие задачи по frontend
Как реализовать функцию isNaN без использования Object.is в JavaScript
Как измеряется и описывается сложность алгоритмов
Что такое автобоксинг в JavaScript и почему можно обращаться к методам строки через точку
Есть ли вероятность, что количество ключей, полученных через for-in и Object.keys, будет разным для одного объекта и при каком условии
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью