> Что возвращает метод filter в JavaScript, если ни один элемент не подходит под условие (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Домклик
Стек: JavaScript
> Пример ответа
Короткий ответ
Метод filter всегда возвращает новый массив. Если ни один элемент не удовлетворяет условию, результатом будет пустой массив []. Это важное отличие от методов вроде find, который в аналогичной ситуации вернёт undefined. Пустой массив - это валидный результат, а не ошибка, поэтому проверять его нужно через length, а не через сравнение с false или null.
Подробное объяснение
filter - это иммутабельный метод массива, который создаёт новый массив, содержащий только те элементы, для которых callback-функция вернула truthy-значение. Если callback возвращает falsy-значение для всех элементов, результирующий массив будет пустым.
Ключевые моменты:
- Исходный массив не мутируется.
- Callback вызывается для каждого элемента, включая
undefined,nullи пропущенные элементы (в отличие отmap). - Пустой массив - это корректный результат, который можно безопасно использовать в цепочках методов, например,
filter(...).map(...). - Проверка результата должна быть явной:
result.length === 0, а неif (result)- пустой массив является truthy-значением.
На практике
В реальных задачах пустой результат filter - это нормальное состояние, которое нужно обрабатывать осознанно. Например, при фильтрации списка товаров по категории, если товаров нет, пользователю нужно показать сообщение "ничего не найдено", а не просто пустую страницу.
Также важно помнить, что filter не изменяет исходный массив, поэтому если вы планируете использовать результат для дальнейших операций, нужно присвоить его переменной или использовать в цепочке.
Пример кода
JAVASCRIPTconst numbers = [1, 2, 3, 4, 5];const evenNumbers = numbers.filter(num => num % 2 === 0);// [2, 4]const negativeNumbers = numbers.filter(num => num < 0);// []// Проверка результатаif (negativeNumbers.length === 0) {console.log('Нет отрицательных чисел');}// Пустой массив - truthy, поэтому такая проверка не сработаетif (negativeNumbers) {console.log('Этот код выполнится всегда');}
Как отвечать на собеседовании
Начните с прямого ответа: "возвращает новый пустой массив". Затем добавьте контекст: почему это важно, как это отличается от find и some, и как правильно проверять результат. Упомяните, что filter не мутирует исходный массив. Если спросят про производительность, отметьте, что filter всегда создаёт новый массив, даже если результат пустой, - это O(n) по времени и O(n) по памяти в худшем случае.
Что проверяет интервьюер
Интервьюер проверяет:
- Понимание базовой семантики метода
filter. - Знание разницы между
filterиfind(пустой массив vsundefined). - Осознание того, что пустой массив - truthy-значение.
- Умение корректно обрабатывать пустой результат в реальном коде.
Типичные ошибки
- Проверка результата через
if (result)- пустой массив truthy, поэтому условие всегда истинно. - Ожидание
nullилиundefinedвместо пустого массива. - Попытка мутировать исходный массив через
filter- метод иммутабелен. - Забывание, что callback вызывается и для элементов со значением
undefinedв массиве (например, послеdelete).
> Похожие задачи по frontend
В чем разница каррирования и частичного применения в JavaScript
Можно ли пометить стрелочную функцию как асинхронную в JavaScript
Как работает функция groupBy в JavaScript
Как собрать неопределённое количество аргументов функции в JavaScript и работать с ними
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью