Основы Big-O, горячие и холодные участки (полезные приёмы для начинающих)
Развивайте интуицию относительно Big-O и сосредоточьтесь на горячих участках. Заменяйте вложенные поиски на Set и Map, избегайте повторной работы и сохраняйте код небольшим и понятным
«Основы Big-O, горячие и холодные участки (полезные приёмы для начинающих)» — бесплатный урок JavaScript Academy на CoddyKit. Это урок 1 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения JavaScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс JavaScript Academy содержит 3 уроков всего.
Общая картина
Цель: быстро получить результат без сложной теории.
- Интуиция Big-O: избегайте двойных циклов
- Горячие и холодные пути: оптимизируйте то, что выполняется чаще всего
- Set/Map для быстрых поисков
- Выполняйте работу один раз, а результаты используйте повторно

Вложенный поиск обходится дорого
Вложенные поиски увеличивают объём работы. Каждый includes снова проходит по массиву.
// Bad pattern: nested scan for membership (can be ~O(n^2))
const haystack = ["a","b","c","d","e"];
const needles = ["b","e","x"];
const foundSlow = [];
for (const n of needles) {
// includes scans the array each time
if (haystack.includes(n)) {
foundSlow.push(n);
}
}
console.log("slow found:", foundSlow);

Set для проверки принадлежности
Создайте Set один раз и используйте has для быстрой проверки принадлежности. Это устраняет внутренний поиск.
// Better: build a Set once, then O(1)-ish checks (~O(n) overall)
const fastSet = new Set(haystack);
const foundFast = [];
for (const n of needles) {
if (fastSet.has(n)) {
foundFast.push(n);
}
}
console.log("fast found:", foundFast);

Map для подсчёта
Map хранит количества для последующего чтения примерно за O(1); не проходите массивы повторно для пересчёта.
// Build a frequency map once instead of scanning many times
const words = ["a","b","a","a","c","b"];
const freq = new Map();
for (const w of words) {
const old = freq.get(w) || 0;
freq.set(w, old + 1);
}
console.log("count a:", freq.get("a"));
console.log("count b:", freq.get("b"));

Выполните один раз (кэширование)
Если значение повторяется, кэшируйте результат. Для начинающих кэши должны быть небольшими и понятными.
// Do work once and reuse (tiny cache)
function heavy(x) {
// pretend heavy math
return x * x + 1;
}
const cache = new Map();
function heavyCached(x) {
if (cache.has(x)) return cache.get(x);
const val = heavy(x);
cache.set(x, val);
return val;
}
console.log("first:", heavyCached(5));
console.log("second:", heavyCached(5)); // cached

Сосредоточьтесь на горячих путях
Горячий путь: выполняется много раз (оптимизируйте его). Холодный путь: редкий код (оставляйте его простым).
- Удаляйте внутренние циклы из горячего кода.
- Используйте Set/Map для горячих задач проверки принадлежности и подсчёта.
- Измерьте позже, а начните с понятного решения.

Викторина об оптимизации проверки принадлежности
Быстрая проверка: как сократить вложенные поиски.

Итоги
Итоги: избегайте вложенных поисков, используйте Set/Map для поисков и подсчётов и выполняйте работу один раз. Сосредоточьтесь на горячих путях, а холодный код оставляйте простым.

Часто задаваемые вопросы
Урок «Основы Big-O, горячие и холодные участки (полезные приёмы для начинающих)» бесплатный?
Да — полный текст урока «Основы Big-O, горячие и холодные участки (полезные приёмы для начинающих)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс JavaScript Academy, подпишись на CoddyKit PRO. Курс JavaScript Academy содержит 3 уроков всего.
Чему я научусь в уроке «Основы Big-O, горячие и холодные участки (полезные приёмы для начинающих)»?
Развивайте интуицию относительно Big-O и сосредоточьтесь на горячих участках. Заменяйте вложенные поиски на Set и Map, избегайте повторной работы и сохраняйте код небольшим и понятным Ты практикуешь JavaScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать JavaScript Academy?
Предыдущий опыт не требуется. JavaScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 3.
Сколько времени занимает урок «Основы Big-O, горячие и холодные участки (полезные приёмы для начинающих)»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке JavaScript Academy?
Да. Каждый урок JavaScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основы Big-O, горячие и холодные участки (полезные приёмы для начинающих)
- Как избегать утечек — замыкания, таймеры и ссылки
- Введение в профилирование (Node/DevTools) — простые привычки измерения времени