Пройдите people один раз, рассматривая только age < limitAge, и сохраните подходящего сотрудника с максимальной salary. При отсутствии кандидатов верните null.
Определение имени пользователя с наибольшей зарплатой среди людей младше заданного возраста
Пройдите people один раз, рассматривая только age < limitAge, и сохраните подходящего сотрудника с максимальной salary. При отсутствии кандидатов верните null.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо написать функцию, которая получает в качестве аргумента предельный возраст и возвращает имя того сотрудника, у которого максимальная зарплата, при условии, что его возраст меньше указанного порога.
const people = [
{ id: 1, age: 16, salary: 200, name: 'Andrey', roles: ['front'] },
{ id: 2, age: 21, salary: 250, name: 'Vasya', roles: ['back'] },
{ id: 3, age: 30, salary: 400, name: 'Sergey', roles: ['front', 'lead'] },
{ id: 4, age: 25, salary: 360, name: 'Dmitriy', roles: ['manager'] },
{ id: 5, age: 50, salary: 420, name: 'Max', roles: ['back', 'lead'] },
];
Ответ
Пройдите people один раз, рассматривая только age < limitAge, и сохраните подходящего сотрудника с максимальной salary. При отсутствии кандидатов верните null.
function highestPaidUnder(limitAge) {
let best = null;
for (const person of people) {
if (person.age < limitAge && (!best || person.salary > best.salary)) best = person;
}
return best?.name ?? null;
}
Для порога 30 вернётся Dmitriy, для 31 — Sergey, для 16 — null. Граница строгая: сотрудник ровно указанного возраста не подходит. При одинаковой зарплате выбран первый в исходном порядке. Время O(n), дополнительная память O(1), сортировка и изменение исходных данных не нужны.