Привет всем, это Билл Уокер предоставляет вам еще одну жемчужину информации — на этот раз с использованием flatMap со списком/массивом для JavaScript и Typescript.

Зачем использовать плоскую карту? Это эквивалент использования flat и map в одной функции.

Мы сделаем еще один шаг вперед и продемонстрируем, как использовать плоскую карту для удаления элементов из массива.

Начнем с массива europeanCapitalCities, который содержит:

Мы видим, что у нас есть 2 уровня массива.

Теперь мы удалим и город, в названии которого есть «on».

Как видите, в названии городов нет слова «on», поэтому ни один из них не был удален, но массив был сглажен и сопоставлен с переменной flatMapRemove.

На этот раз мы удалим все города на букву «n», но чтобы сделать это действительно сложно, мы будем использовать массив с глубиной в 3 уровня.

Из списка городов выше мы видим, что на каждом уровне есть город с буквой n.

Мы могли бы вызвать 3 раза лоскут и решить эту проблему, однако мы проектируем, что у нас может быть массив любой глубины. Одним из способов решения этой проблемы является использование рекурсии. Начнем с вызова функции flatMapFunc и передачи списка столиц.

Если мы находим массив внутри массива, мы снова вызываем функцию, в которой находимся! Это рекурсия.

Я включил дополнительное ведение журнала консоли, чтобы продемонстрировать, что происходит.

Мы проверяем название города и, если оно содержит «n», удаляем его, возвращая пустой массив. Мы возвращаем переменную «город», чтобы сохранить ее.

Ниже мы видим, что у нас есть «возвращающийся город Мехико», чтобы показать, что мы сохраняем его в массиве.

Ниже мы видим, что у нас есть «удалить Буэнос-Айрис», поскольку он содержит «n». Мы удаляем его из списка, возвращая пустой массив.

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

Мы также можем отметить, что при рекурсии он возвращает Кардифф и Белфаст и не включает Эдинбург, поскольку он содержит «n».

Пожалуйста, оставляйте любые комментарии или вопросы.

Не пропустите следующие статьи. Пожалуйста, подпишитесь и поделитесь!

Первоначально опубликовано на https://wwalker.substack.com 1 октября 2022 г.