Найти в Дзене

Решение задач на JavaScript | Часть 1 | Массивы и строки, анаграммы

Всем привет, сегодня мы будем решать задачи на JavaScript. Я нашёл вот такой сайт, где можно выбрать задачи на любой уровень сложности Начать я решил с задачи на массивы среднего уровня сложности В этой задачи нам нужно преобразовать массив с несколькими уровнями вложенности в обычный массив. Для начала создадим новый массив, в который будут записываться элементы из первоначального массива, сделаем, чтобы он выводился через return, а также начнём создавать цикл. Я хочу попробовать создать рекурсивную функцию, то есть функцию, которая будет вызывать саму себя. Я попытаюсь сделать так, чтобы функция flatten записывала в новый массив элементы, которые являются числами, а когда ей попадётся ещё один вложенный массив, она для него будет вызывать саму себя. В новом вложенном массиве она соберёт все числа и результат своего выполнения объединит с основным новым массивом. Запускаем... Странно, мне казалось, что на эту задачу я потрачу намного больше времени... Вроде всё правильно на первый вз
Оглавление

Всем привет, сегодня мы будем решать задачи на JavaScript. Я нашёл вот такой сайт, где можно выбрать задачи на любой уровень сложности

1. Задача на вложенные массивы

Начать я решил с задачи на массивы среднего уровня сложности

-2

В этой задачи нам нужно преобразовать массив с несколькими уровнями вложенности в обычный массив.

Для начала создадим новый массив, в который будут записываться элементы из первоначального массива, сделаем, чтобы он выводился через return, а также начнём создавать цикл.

-3

Я хочу попробовать создать рекурсивную функцию, то есть функцию, которая будет вызывать саму себя. Я попытаюсь сделать так, чтобы функция flatten записывала в новый массив элементы, которые являются числами, а когда ей попадётся ещё один вложенный массив, она для него будет вызывать саму себя. В новом вложенном массиве она соберёт все числа и результат своего выполнения объединит с основным новым массивом.

-4

Запускаем...

Странно, мне казалось, что на эту задачу я потрачу намного больше времени...

-5

Вроде всё правильно на первый взгляд, но я считаю, что нужно проверить нашу функцию на большем количестве входных данных.

На том самом удивительном сайте, который я нашёл сегодня, в описании есть примеры входных данных и результатов, полученных после них. Давайте протестируем наш код на них

-6

Удивительно, но задачку эту я решил очень быстро, я ожидал, что потрачу намного больше времени.

-7

Но я всё ещё сомневаюсь, я считаю, что это нужно проверить на более сложном массиве.

-8

Удивительно. Я удивлён, что рекурсивные функции мне пригодились, так ещё с помощью них я смог быстро решить эту задачу. Так, ну а теперь давайте сделаем полную жесть:

-9

Получается, мой код, основанный на рекурсивных функциях, мог сделать и такое. Это очень хорошо. Рекомендую вам изучить эту тему, с помощью рекурсивных функций, мне удалось решить задачу довольно быстро

Ещё раз покажу код, ну а мы переходим к следующей задаче...

-10

2. Задача на строки - Анаграммы

В этой задаче нам нужно сделать функцию, которая будет проверять, состоят ли две строки из одних и тех же символов, но без учёта порядка. То есть, будет проверять анаграммы.

-11

Создадим объект, куда будем записывать буквы и их количество.

-12

Выглядит это так. Код создаёт объект, куда записывает все буквы из строчки и считает их количество.

-13

Сделаем такой же код и для второй строки

-14

Сделаем проверку. Если количество уникальных букв из letters не совпадает с letters2, функция завершается результатом false.

-15

Теперь, когда у нас остаются два объекта одинаковой длины, удобно будет считать и проверять их элементы

-16

Создаём цикл, где перебираем все ключи объекта letters. А потом по ключам сравниваем, равны ли значения.

Знаю, можно это было бы сделать по проще, возможно, есть способ.

-17

Давайте посмотрим, что же получится:

-18

На простых строках получается правильный ответ. Давайте посмотрим на вариантах из задания

-19
-20

Тоже получилось всё правильно. А теперь, давайте я попробую написать, что-нибудь сложное

-21

Тоже получилось всё правильно. Очень рад этому 😁.

Подходим к концу

Ну а на этом всё, сегодня мы попробовали порешать вот такие задачки. Если понравилось, ставьте лайки и пишите комментарии. А я в дальнейшем попробую ещё порешать каких-нибудь задачек и написать об этом