Задача про JavaScript-функцию
Будет полезна тем, кто хочет испытать свои навыки программирования в нестандартных ситуациях.
Эту задачу мы подготовили совместно с нашими друзьями — «Эльбрус Буткемп».
Условие
Фронтенд-разработчика Сашу пригласили на собеседование в компанию его мечты. После того как он успешно прошел два этапа, остался последний — техническое задание. Накануне принимающему специалисту показалось, что испытание не соответствует навыкам Саши, поэтому он его решил усложнить. Ведь важно проверить не только технические навыки будущего коллеги, но и способность решать простые задачи с рядом ограничений.
Задача
Помогите Саше выполнить задание и попасть на работу мечты. Напишите JavaScript-функцию с одним параметром n, соблюдая несколько требований от специалиста.
- Если входной параметр равен 1, функция должна вернуть 2.
- Если входной параметр равен 2, функция должна вернуть 1.
- Остальные значения параметра n в задаче не участвуют.
- Не допускается использование условных конструкций: if/else, switch/case, тернарных операторов.
Предоставьте три варианта решения, один из которых выполняется в одну строку, например function example () { // код }.
Пример запуска функции:
console.log(example(1)); // 2
console.log(example(2)); // 1
Решение
Задачу можно решить тремя способами: использовать объекты для хранения значений, массивы с индексированными результатами и однострочную функцию с массивом, где индекс соответствует значению параметра.
Использование объекта для хранения значений
function example(n) {
return {1: 2, 2: 1}[n];
}
В первом варианте сохраняем соответствие между параметрами и их ответами. Например, если передать в функцию параметр 1, то вернет 2, а если передать 2, то — 1.
Использование массива с индексированными результатами
function example(n) {
return [2, 1][n - 1];
}
Второй вариант решаем аналогично. В функции [2, 1][n — 1] при n = 1 берем из массива элемент с индексом 0 — это первое число равное 2. При n = 2, получаем элемент с индексом 1 — это значение 1.
Однострочное решение
const example = (n) => 3 - n
В третьем варианте выполняем стандартное вычисление. Преимущество такого способа — в лаконичности.