Вопросы и ответы по JavaScript
Готовые ответы на частые вопросы по JavaScript: короткое решение и примеры кода.
Строки
- Как добавить ведущие нули к числуВедущие нули в JavaScript через padStart: номера, часы и минуты.
- Как заменить текст в строкеЗамена подстроки в JavaScript: replaceAll, replace и замена без учёта регистра.
- Как извлечь числа из строкиПолучение чисел из текста в JavaScript: match с регулярным выражением, дробные числа и только цифры.
- Как найти позицию подстрокиПоиск места подстроки в JavaScript: indexOf, lastIndexOf, все позиции и search с регулярным выражением.
- Как обрезать строку до нужной длиныОбрезка длинной строки в JavaScript с добавлением многоточия через slice.
- Как перевернуть строкуПереворот строки в JavaScript через split, reverse и join, в том числе для строк с эмодзи.
- Как перевести camelCase в snake_case и обратноПреобразование между camelCase, snake_case и kebab-case в JavaScript через replace и регулярное выражение.
- Как посчитать количество символов в строкеПодсчёт символов в JavaScript: length, эмодзи и другие особые символы, количество конкретного символа.
- Как посчитать количество слов в строкеПодсчёт слов в JavaScript: разбиение по пробелам, лишние пробелы и самое частое слово.
- Как преобразовать строку в массивРазбиение строки на массив в JavaScript: по разделителю, по символам и по словам.
- Как проверить, начинается или заканчивается ли строка подстрокойПроверка начала и конца строки в JavaScript: startsWith, endsWith, без учёта регистра и несколько вариантов.
- Как проверить, пустая ли строкаПроверка пустой строки в JavaScript: length, строка из пробелов, null и undefined.
- Как проверить, содержит ли строка подстрокуПроверка вхождения подстроки в JavaScript: includes, поиск без учёта регистра и определение позиции.
- Как разбить текст на строкиРазбиение многострочного текста в JavaScript: split по переводам строки, окончания строк Windows и пустые строки.
- Как сгенерировать случайную строкуСлучайная строка в JavaScript: из набора символов, через Math.random и через crypto для кодов и токенов.
- Как сделать первую букву заглавнойЗаглавная первая буква строки в JavaScript: toUpperCase и slice, отдельная функция и каждое слово.
- Как сделать слаг для URL из строкиПреобразование заголовка в слаг для адреса в JavaScript: нижний регистр, дефисы вместо пробелов, удаление диакритики и лишних символов.
- Как скрыть часть строкиМаскировка номера карты, телефона или почты звёздочками в JavaScript: slice, padStart и repeat.
- Как сравнить строки без учёта регистраСравнение строк в JavaScript без учёта регистра: toLowerCase и localeCompare с параметром sensitivity.
- Как убрать пробелы в начале и конце строкиУдаление пробелов в JavaScript: trim, trimStart, trimEnd и замена нескольких пробелов одним.
- Как удалить все пробелы из строкиУдаление пробельных символов в JavaScript: все пробелы, табуляции и переводы строк, замена нескольких пробелов одним.
- Как удалить HTML-теги из строкиПолучение обычного текста из HTML в JavaScript: регулярное выражение и DOMParser в браузере.
- Как экранировать HTML в строкеЭкранирование специальных символов HTML в JavaScript, чтобы текст пользователя показывался как текст, а не как разметка.
Массивы
- Как вставить элемент в массив на нужную позициюДобавление элемента в середину или начало массива JavaScript: splice, toSpliced и unshift.
- Как найти дубликаты в массивеПоиск повторяющихся значений в массиве JavaScript: filter с indexOf, Set и дубликаты по полю объекта.
- Как найти максимум и минимум в массивеНаибольшее и наименьшее значение массива в JavaScript через Math.max, Math.min и reduce.
- Как найти общие элементы двух массивовПересечение массивов в JavaScript: filter с includes, Set для скорости и методы Set.
- Как найти разницу между двумя массивамиЭлементы, которые есть в одном массиве и нет в другом, в JavaScript: filter, симметричная разность и методы Set.
- Как найти элемент массива по условиюПоиск в массиве JavaScript: find, findIndex, findLast и filter для всех совпадений.
- Как объединить два массиваОбъединение массивов в JavaScript через оператор spread, concat и без повторов.
- Как отсортировать массивСортировка массива в JavaScript: числа, строки, по убыванию и по полю объекта.
- Как отсортировать массив объектов по нескольким полямСортировка объектов в JavaScript по нескольким полям: функция сравнения с запасным полем, строки и обратный порядок.
- Как отфильтровать массивФильтрация массива в JavaScript через filter: по условию, удаление пустых значений, объекты.
- Как перебрать массив с индексомПеребор массива в JavaScript с доступом к индексу: forEach и entries.
- Как перемешать массивПеремешивание массива в JavaScript алгоритмом Фишера-Йетса и почему sort со случайным числом — плохая идея.
- Как получить последний элемент массиваПоследний элемент массива в JavaScript: метод at, индекс через length и несколько последних элементов.
- Как получить случайный элемент массиваСлучайный элемент массива в JavaScript: Math.random с Math.floor, несколько случайных элементов без повторов.
- Как посчитать среднее значение массиваСреднее арифметическое массива в JavaScript: reduce и length, пустой массив и среднее по полю объектов.
- Как посчитать сумму элементов массиваСумма и среднее значение массива в JavaScript через reduce, сумма по полю объектов.
- Как посчитать, сколько раз встречаются значения в массивеПодсчёт повторений каждого значения в массиве JavaScript: объект, Map и filter для одного значения.
- Как преобразовать массив в объектПревращение массива в объект в JavaScript: Object.fromEntries, индекс по id и пары ключ-значение.
- Как преобразовать массив в строкуПреобразование массива в строку в JavaScript: join с разделителем и JSON.stringify.
- Как проверить, есть ли значение в массивеПроверка значения в массиве JavaScript: includes для простых значений и some для объектов.
- Как проверить, что все элементы массива подходят под условиеПроверка элементов массива в JavaScript: every для всех, some хотя бы для одного, и пустой массив.
- Как разбить массив на страницыПостраничный вывод массива в JavaScript: slice по номеру страницы и общее число страниц.
- Как разбить массив на частиДеление массива на части заданного размера в JavaScript: цикл со slice и Array.from.
- Как сгруппировать массив по полюГруппировка элементов массива в JavaScript: Object.groupBy, reduce и подсчёт элементов в группах.
- Как сделать вложенный массив плоскимПревращение вложенных массивов в один в JavaScript: flat с глубиной, Infinity и flatMap.
- Как создать массив чисел от 1 до NСоздание диапазона чисел в JavaScript: Array.from, шаг и массив, заполненный одним значением.
- Как сравнить два массиваСравнение массивов в JavaScript: поэлементно через every, без учёта порядка и почему === не работает.
- Как убрать повторяющиеся объекты по полюУникальные объекты в массиве JavaScript по id или другому полю: Map, filter с Set и сохранение последнего.
- Как удалить дубликаты из массиваУдаление повторяющихся значений массива в JavaScript через Set и для массива объектов.
- Как удалить пустые значения из массиваОчистка массива в JavaScript: filter с Boolean, сохранение нулей и удаление пустых строк.
- Как удалить элемент из массиваУдаление элемента массива в JavaScript: по значению, по индексу, первого и последнего.
Числа
- Как ограничить число диапазономУдержание числа между минимумом и максимумом в JavaScript через Math.min и Math.max.
- Как округлить число вверх или внизОкругление в JavaScript: Math.ceil, Math.floor, Math.round, Math.trunc и округление до десятков.
- Как округлить число до двух знаковОкругление числа в JavaScript до двух знаков после запятой: toFixed и Math.round.
- Как отформатировать ценуФорматирование денег в JavaScript: Intl.NumberFormat с валютой, разные страны и центы.
- Как отформатировать число с разделителямиФорматирование чисел в JavaScript через toLocaleString: разделители тысяч, знаки после запятой и валюта.
- Как перевести байты в КБ, МБ и ГБВывод размера файла в JavaScript в понятном виде: цикл по единицам и Intl.NumberFormat.
- Как получить случайное числоСлучайное число в диапазоне, случайный элемент массива и перемешивание массива в JavaScript.
- Как посчитать процентПроценты в JavaScript: доля от числа, процент от числа, изменение в процентах и форматирование.
- Как преобразовать строку в числоПреобразование строки в число в JavaScript: Number, parseInt, parseFloat и проверка на NaN.
- Как проверить, чётное ли числоПроверка чётности и кратности числа в JavaScript с помощью оператора остатка от деления.
- Как проверить, что значение равно NaNПроверка NaN в JavaScript: Number.isNaN, почему NaN не равен сам себе, и Number.isFinite.
- Как работать с очень большими целыми числамиБольшие целые числа в JavaScript: предел Number, BigInt и перевод BigInt в строку.
- Почему 0.1 + 0.2 не равно 0.3 и что с этим делатьОшибки дробных чисел в JavaScript: округление результата, сравнение через Number.EPSILON и расчёт в центах.
Объекты
- Как безопасно прочитать вложенное свойствоЧтение глубоких свойств в JavaScript без ошибок: опциональная цепочка, значение по умолчанию и вызов метода, которого может не быть.
- Как взять из объекта только нужные поляВыбор нужных свойств объекта в JavaScript: деструктуризация, функция pick и фильтрация по значениям.
- Как задать значение по умолчаниюЗначения по умолчанию в JavaScript: оператор ??, отличие от ||, параметры по умолчанию и деструктуризация.
- Как объединить объектыСлияние объектов в JavaScript: оператор расширения, Object.assign, чьё значение побеждает и вложенные объекты.
- Как перебрать свойства объектаПеребор свойств объекта в JavaScript: Object.entries, Object.keys и Object.values.
- Как преобразовать все значения объектаИзменение каждого значения объекта в JavaScript: Object.entries, map и Object.fromEntries, а также для ключей.
- Как преобразовать объект в массивПолучение массивов из объекта в JavaScript: Object.keys, Object.values, Object.entries и массив объектов.
- Как проверить, есть ли свойство в объектеПроверка свойства объекта в JavaScript: Object.hasOwn, оператор in и сравнение с undefined.
- Как проверить, пустой ли объектПроверка пустого объекта в JavaScript: Object.keys и length, null и почему пустой объект истинный.
- Как сделать объект неизменяемымЗащита объекта от изменений в JavaScript: Object.freeze, поверхностная заморозка и const.
- Как скопировать объектКопирование объекта в JavaScript: поверхностная копия через spread и глубокая через structuredClone.
- Как сравнить два объектаСравнение объектов в JavaScript: по ссылке, по содержимому через Object.keys и вложенные объекты.
- Как удалить свойство из объектаУдаление ключа из объекта в JavaScript: оператор delete, деструктуризация с остатком и удаление нескольких ключей.
Дата и время
- Как вывести длительность в часах, минутах и секундахПревращение секунд в 1:05:09 или 2 ч 15 мин в JavaScript: деление с остатком и padStart.
- Как найти разницу между датамиРазница между датами в JavaScript: количество дней и прибавление дней к дате.
- Как отформатировать датуФорматирование даты в JavaScript: toLocaleDateString и сборка формата вручную.
- Как перевести Unix-время в датуМетки времени в JavaScript: секунды и миллисекунды, дата из метки и обратно.
- Как показать дату в другом часовом поясеЧасовые пояса в JavaScript: toLocaleString с timeZone, Intl.DateTimeFormat и время в нескольких городах.
- Как показать, сколько времени прошлоОтносительное время в JavaScript: 5 минут назад и через 2 дня с помощью Intl.RelativeTimeFormat.
- Как получить дату из строкиПревращение строки в дату в JavaScript: формат ISO, локальные даты, формат день.месяц.год и проверка результата.
- Как получить день неделиДень недели в JavaScript: getDay, название дня через toLocaleDateString и понедельник как первый день.
- Как получить первый и последний день месяцаНачало и конец месяца в JavaScript: день 1, день 0 следующего месяца и число дней в месяце.
- Как получить текущую дату и времяТекущие дата и время в JavaScript: new Date, Date.now, отдельные части и отформатированная строка.
- Как посчитать возраст по дате рожденияРасчёт возраста в годах в JavaScript: разница лет и поправка на ещё не наступивший день рождения.
- Как прибавить к дате дни, месяцы или часыАрифметика дат в JavaScript: setDate, setMonth, прибавление часов и сохранение исходной даты.
- Как сравнить две датыСравнение дат в JavaScript: операторы больше и меньше, равенство через getTime и сравнение только по дню.
JSON и веб
- Как загрузить файл через fetchОтправка файлов на сервер в JavaScript: FormData, несколько файлов, дополнительные поля и проверка размера и типа.
- Как задать таймаут для fetchОграничение времени ожидания запроса в JavaScript: AbortSignal.timeout, AbortController и обработка ошибки таймаута.
- Как закодировать и раскодировать Base64Base64 в JavaScript: btoa и atob, текст с любыми буквами через TextEncoder и Base64 для URL.
- Как закодировать текст для URLСпециальные символы в адресах в JavaScript: encodeURIComponent, decodeURIComponent и отличие от encodeURI.
- Как обрабатывать ошибки fetchОбработка ошибок запросов в JavaScript: сбои сети, HTTP-статусы, некорректный JSON и одна вспомогательная функция.
- Как отменить запрос fetchОтмена запроса в JavaScript через AbortController: кнопка отмены и отмена старого поискового запроса.
- Как отправить HTTP-запросGET- и POST-запросы в JavaScript через fetch: чтение JSON, отправка JSON и заголовки.
- Как получить домен из почты или адресаИзвлечение домена в JavaScript: объект URL для адресов, split для почты и удаление www.
- Как преобразовать объект в JSONJSON.stringify в JavaScript: читаемый формат с отступами, выбор полей и что теряется.
- Как разобрать и собрать строку запросаРабота с частью адреса после вопросительного знака в JavaScript: URLSearchParams, добавление параметров и превращение в объект.
- Как разобрать строку JSONПревращение JSON в объект в JavaScript: JSON.parse, обработка сломанного JSON и преобразование дат через reviver.
- Как разобрать URL на частиПолучение протокола, хоста, пути и параметров из адреса в JavaScript с помощью объекта URL.
- Как скачать файл, созданный в браузереСохранение текста, JSON или CSV в файл в JavaScript: Blob, URL.createObjectURL и ссылка с download.
Асинхронный код
- Как выполнить асинхронные операции по очередиПоследовательное выполнение в JavaScript: await в цикле for...of, передача результата дальше и почему forEach не подходит.
- Как выполнить несколько асинхронных операций параллельноПараллельные запросы в JavaScript: Promise.all, результаты по порядку и Promise.allSettled, если часть падает.
- Как выполнять асинхронные задачи параллельно, но с ограничениемОграничение параллельности в JavaScript: пул обработчиков, чтобы одновременно шло не больше N запросов.
- Как выполнять код через равные промежутки времениПовторяющиеся действия в JavaScript: setInterval, остановка через clearInterval и цепочка setTimeout.
- Как добавить таймаут к промисуОграничение времени ожидания промиса в JavaScript: Promise.race с таймером и очистка таймера.
- Как обрабатывать ошибки в асинхронном кодеОшибки в промисах и асинхронных функциях JavaScript: try...catch с await, catch у промиса и необработанные отклонения.
- Как повторить неудачную операциюПовтор запроса при ошибке в JavaScript: цикл с попытками, растущая пауза и какие ошибки повторять.
- Как подождать перед выполнением кодаПауза в JavaScript: setTimeout, функция sleep на промисе и await, паузы в цикле.
- Как превратить функцию с колбэком в промисОбёртка старых API с колбэками в JavaScript: new Promise, resolve и reject и util.promisify в Node.js.
- Как сделать debounce функцииDebounce в JavaScript: вызов функции только после того, как пользователь перестал печатать, через setTimeout и clearTimeout.
- Как сделать throttle функцииThrottle в JavaScript: вызов функции не чаще одного раза за интервал, для прокрутки и изменения размера окна.
DOM и браузер
- Как добавить, убрать или переключить CSS-классРабота с классами в JavaScript: classList.add, remove, toggle, contains и replace.
- Как записать и прочитать cookieCookie в JavaScript: document.cookie, время жизни cookie, чтение по имени и удаление.
- Как отследить клик вне элементаЗакрытие меню или окна по клику снаружи в JavaScript: contains, closest и клавиша Escape.
- Как перейти на другую страницуПереходы в JavaScript: location.href, location.replace, открытие новой вкладки и перезагрузка страницы.
- Как получить данные из формыЧтение полей формы в JavaScript: FormData, превращение в объект, флажки и несколько значений.
- Как получить параметры из адреса страницыЧтение параметров текущего URL в JavaScript: location.search, URLSearchParams и изменение параметров без перезагрузки.
- Как прокрутить страницу к элементуПрокрутка страницы в JavaScript: scrollIntoView с плавной прокруткой, прокрутка наверх и отступ для фиксированной шапки.
- Как реагировать на Enter и другие клавишиСобытия клавиатуры в JavaScript: keydown, event.key, сочетания клавиш и Enter в текстовом поле.
- Как сделать переключатель тёмной темыСветлая и тёмная тема на JavaScript: класс на html, CSS-переменные, системная настройка и запоминание выбора.
- Как скопировать текст в буфер обменаКопирование в буфер обмена в JavaScript: navigator.clipboard.writeText, кнопка копирования и обработка ошибок.
- Как создать элемент и добавить его на страницуСоздание HTML-элементов в JavaScript: createElement, append, prepend, список из массива и шаблон.
- Как сохранить объект в localStorageХранение данных в браузере на JavaScript: JSON.stringify для записи, JSON.parse для чтения и значение по умолчанию.
- Как узнать, что элемент появился на экранеIntersectionObserver в JavaScript: анимация при появлении, ленивая загрузка и бесконечная прокрутка.
Проверка данных
- Как проверить адрес электронной почтыПроверка email в JavaScript: простое регулярное выражение, поле email в HTML и почему идеальная проверка невозможна.
- Как проверить надёжность пароляПравила для пароля в JavaScript: длина, буквы, цифры и символы, список невыполненных требований и оценка надёжности.
- Как проверить номер телефонаПроверка номеров телефона в JavaScript: удаление оформления, проверка числа цифр и международный формат.
- Как проверить форму перед отправкойПроверка формы в JavaScript: HTML-атрибуты, checkValidity, свои сообщения через setCustomValidity и вывод ошибок.
- Как проверить, что дата корректнаПроверка дат в JavaScript: недействительный Date, 30 февраля и проверка строки в формате YYYY-MM-DD.
- Как проверить, что строка — правильный URLПроверка адреса в JavaScript: URL.canParse, new URL с try...catch и разрешение только http и https.
- Как проверить, что строка — числоПроверка числового ввода в JavaScript: Number и isFinite, только целые, диапазоны и почему parseFloat слишком снисходителен.
Node.js
- Как дописать данные в файл в Node.jsДобавление строк в конец файла в Node.js: appendFile, простой лог с датами и поток записи.
- Как записать данные в файл в Node.jsЗапись текста в файл в Node.js: writeFile, создание и перезапись, запись массива строк и создание папок.
- Как получить расширение файлаРасширение и имя файла в JavaScript: path.extname и basename в Node.js и lastIndexOf в браузере.
- Как получить список файлов в папке в Node.jsЧтение папки в Node.js: readdir, файлы и папки отдельно, фильтр по расширению и все файлы рекурсивно.
- Как посчитать хеш строкиSHA-256 и MD5 в JavaScript: createHash в Node.js и crypto.subtle.digest в браузере.
- Как проверить, существует ли файл в Node.jsПроверка файла в Node.js: existsSync, access с промисами, stat для файлов и папок и почему часто лучше просто открыть файл.
- Как прочитать аргументы командной строки в Node.jsАргументы скрипта Node.js: process.argv, пропуск первых двух элементов и разбор опций через util.parseArgs.
- Как прочитать и записать JSON-файл в Node.jsJSON-файл в Node.js: readFile с JSON.parse, запись через JSON.stringify в читаемом формате, повреждённый файл.
- Как прочитать переменную окружения в Node.jsПеременные окружения в Node.js: process.env, значения по умолчанию, числа и флаги и файл .env.
- Как прочитать файл в Node.jsЧтение текстового файла в Node.js: readFile из node:fs/promises, кодировка, отсутствующий файл и readFileSync.
- Как прочитать CSV-файл в JavaScriptРазбор CSV в JavaScript и Node.js: строки и столбцы, объекты по строке заголовков и значения в кавычках.
- Как создать папку в Node.jsСоздание каталогов в Node.js: mkdir, вложенные папки через recursive, временная папка и удаление папки.
- Как удалить файл в Node.jsУдаление файлов в Node.js: unlink, rm с force для файла, которого может не быть, и удаление файлов по шаблону.
- Как читать файл построчно в Node.jsОбработка большого файла в Node.js: readline с потоком, for await и split для небольших файлов.
Разное
- Как измерить время выполнения кодаЗамер времени выполнения в JavaScript: performance.now, console.time и замер асинхронных операций.
- Как посмотреть содержимое переменной при отладкеОтладочный вывод в JavaScript: console.log с подписями, JSON.stringify, console.table и оператор debugger.
- Как проверить тип переменнойТипы в JavaScript: typeof, особые случаи null и массивов, instanceof и универсальная функция для типа.
- Как сгенерировать случайный парольНадёжный случайный пароль в JavaScript: crypto.getRandomValues, обязательные группы символов и перемешивание.
- Как сгенерировать UUIDУникальный идентификатор в JavaScript: crypto.randomUUID в браузере и Node.js и проверка формата UUID.