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

Регулярные выражения (RegEx) предоставляют отличный способ поиска шаблона символов в заданной строке. А также разбить строку на массив слов. Array.map(функция) сопоставляет элементы массива с соответствующими элементами, возвращаемыми введенной функцией. Вот функция, позволяющая очень лаконично решить вышеупомянутую проблему (действительно, желанный навык для успешных разработчиков!).

Функция принимает предложение в качестве входных данных и добавляет к нему пробел. RegEx под названием word предназначен для поиска повторяющихся вхождений (флаг 'g' обеспечивает это) набора символов (az ,AZ ,0–9 и _), за которым следует пробел (т. е. слово). \w — это метасимвол для поиска символов в вышеупомянутых диапазонах. '+' позволяет проверять непрерывный набор символов до тех пор, пока не будет найден пробел (обеспечивается \s).

Многое происходит в следующем операторе return. Во-первых, давайте посмотрим на str.match(word). Эта функция создает массив извлеченных RegEx, которые в данном случае представляют собой слово, за которым следует пробел. Затем функция .map() сопоставляет элементы этого массива с длиной каждого элемента (введенная функция возвращает e.length).

(…) называется оператором спреда . Этот оператор позволяет нам иметь элементы массива в виде списка. Например, если есть массив с именем arr=[1,2,3,4,5]. Затем (…arr) возвращает список значений (1 2 3 4 5), а Math.max(…arr) возвращает наибольшее значение, которое в этом примере равно 5.

Таким образом, использование функции Math.max() в списке значений длины слова возвращает максимальную длину самого длинного слова + 1 (Угадайте!).

Элементы массива содержали слова, за которыми следовал пробел. Таким образом, функция e.length возвращает длину строки (word+whitespace).

P.S.- Если вы не заметили, то указанная выше функция корректно работает для предложения, содержащего неспециальные символы. Вы можете изменить регулярное выражение, включив в него и неспециальные символы.

НАДЕЕМСЯ, ВАМ ПОНРАВИЛСЯ ЭТОТ НЕОБЫЧНЫЙ ПОДХОД К ОБЫЧНОЙ ПРОБЛЕМЕ!!