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 .

Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.