DevAdvent 2022
4 простые проблемы в JavaScript и TypeScript
4 простых задачи для тренировки JavaScript
Сегодняшняя проблема DevAdvent очень проста. Для этого я решил решить не один. Все они простые, но полезные для практики.
Тестирование 1–2–3
ссылка на Кату
Ваша команда пишет новый модный текстовый редактор, и вам поручили внедрить нумерацию строк.
Напишите функцию, которая принимает список строк и возвращает каждую строку с правильным номером перед ним.
Нумерация начинается с 1. Формат n: строка. Обратите внимание на двоеточие и пробел между ними.
Примеры: (Вход → Выход)
[] --> [] ["a", "b", "c"] --> ["1: a", "2: b", "3: c"]
Вы можете решить эту проблему одной простой строкой. Я могу использовать метод Array.map() вместе с литералами шаблона.
В машинописном языке:
export const number = (arr: string[]): string[] => arr.map((s, i) => `${++i}: ${s}`);
И в JavaScript:
export const number = (arr) => arr.map((s, i) => `${++i}: ${s}`);
Четным или нечетным
ссылка на Кату
Создайте функцию, которая принимает целое число в качестве аргумента и возвращает «Четное» для четных чисел или «Нечетное» для нечетных чисел.
Наиболее распространенным решением является использование оператора остатка ( %
). Если я делю число на два, а остаток равен нулю, то это число четное.
В машинописном языке:
export const even_or_odd = (n: number): string => n % 2 === 0 ? "Even" : "Odd";
И в JavaScript:
export const even_or_odd = (n) => (n % 2 === 0 ? "Even" : "Odd");
Но есть немного другой и математически более интересный метод. Мы также можем представить число как двоичное. И мы можем использовать оператор побитового И (&) для проверки значения последнего бита. Почему только значение последнего бита? Потому что если это последний бит, то это 1
, то число нечетное, если это 0
, то четное (если вам интересно, посмотрите этот pdf).
В машинописном языке:
export const even_or_odd = (n: number): string => (n & 1 ? "Odd" : "Even");
В JavaScript:
export const even_or_odd = (n) => (n & 1 ? "Odd" : "Even");
Вернуть отрицательный результат
ссылка на Кату
В этом простом задании вам дается число, и вы должны сделать его отрицательным. А может быть, число уже отрицательное?
Число может быть уже отрицательным, и в этом случае никаких изменений не требуется. Ноль (0) не проверяется на наличие какого-либо конкретного знака. Отрицательные нули не имеют математического смысла.
Примеры
makeNegative(1); // return -1 makeNegative(-5); // return -5 makeNegative(0); // return 0
В этом случае я знаю, что число, которое нужно получить, всегда отрицательное. Я могу проверить, если это уже есть, и ничего не делать. Или я могу взять абсолютное значение числа, а затем вернуть его отрицательное значение.
В машинописном языке:
export const makeNegative = (num: number): number => -Math.abs(num);
В JavaScript:
export const makeNegative = (num) => -Math.abs(num);
Преобразование логических значений в строки «Да» или «Нет».
ссылка на Кату
Завершите метод, который принимает логическое значение и возвращает строку «Да» для значения «истина» или строку «Нет» для значения «ложь».
В этом случае я использую тернарный оператор, чтобы вернуть правильное значение.
В машинописном языке:
export const boolToWord = (bool: boolean): string => (bool ? "Yes" : "No");
В JavaScript:
export const boolToWord = (bool) => (bool ? "Yes" : "No");
Спасибо за прочтение! Оставайтесь с нами, чтобы узнать больше.
Не пропустите мою следующую статью — подпишитесь на мой Список адресов электронной почты среднего уровня
Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .
Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.