Как провести ревью функции поиска пользователя

Возвращайте найденного пользователя либо явное отсутствие, а не случайную первую запись. Обработку отсутствия перенесите в вызывающий код и добавьте граничные проверки.

Короткий ответ

Что ответить на собеседовании

Возвращайте найденного пользователя либо явное отсутствие, а не случайную первую запись. Обработку отсутствия перенесите в вызывающий код и добавьте граничные проверки.

Подробный разбор

Ответ с пояснениями

Условие

Функция findUser(users, id) ищет пользователя циклом, а если не находит — молча возвращает первого. При пустом массиве дальнейший код падает. Что исправить в контракте?

Ответ

Возвращайте найденного пользователя либо явное отсутствие, а не случайную первую запись. Обработку отсутствия перенесите в вызывающий код и добавьте граничные проверки.

Простая реализация — return users.find(user => user.id === id). Согласуйте тип ID, чтобы не полагаться на неявное приведение. Вызывающий код должен обработать undefined до чтения полей. Проверьте пустой массив, существующий и отсутствующий ID. Если поиск частый на большом наборе, можно построить Map, но это отдельное решение по измеренной нагрузке.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее