Страница, загруженная в браузер, представляется деревом элементов, многие свойства которых - это обычный текст. Информация, поступающая от сервера и отправляемая к нему, - также текст. Перенос центра тяжести обработки в браузер делает работу сайта более эффективной, снижает нагрузку на сервер и дает последнему возможность быстрее обслуживать большее количество посетителей.
Метод split JavaScript разделяет строку на составляющие по конкретному разделителю и формирует массив. Метод join соединяет элементы массива в строку через заданную строку. В качестве разделителя может выступать символ, строка или регулярное выражение.
Синтаксис метода split и его смысл
Формат метода JavaScript split (string, limit). Первый параметр - это собственно разделитель. Второй параметр - это количество элементов, которое будет сформировано в выходном массиве.
В первом примере разделитель не указан ни в конструкции str.split JavaScript, ни в методе join массива aStr, полученного в результате разделения строки по предполагаемому разделителю ",". Слияние элементов массива также производится по символу ",".
Второй пример содержит ошибку: вместо запятой между буквами "d" и "e" указана точка. Избежать вероятных ошибок и одновременно убрать лишние пробелы позволяет использование регулярного выражения - пример 3. В последнем примере между существенными элементами строки могут быть:
- запятая;
- точка с запятой;
- точка.
До и после разделителя может быть любое количество пробелов. В результате получится «чистая» строка (res) и массив (aStr), содержащий только трехбуквенные наименование месяцев.
Выбор содержимого и разделителей
В некоторых случаях может потребоваться не только разобрать строку через заданный разделитель, но и выбрать его тоже.
В примере (4) в качестве разделителя при слиянии выбран символ "`" потому как в исходной строке встречаются разные разделители. Сомнительно, что результирующий массив удобен для использования, когда в нем находятся различные разделители, но области применения могут определять различные требования к тому, как разбирать и собирать строки.
Однако пример (4) показывает, что JavaScript split возвращает запятые, точки и другие символы как элементы массива. В примере (5) в качестве разделителей используются цифры. Здесь можно манипулировать, например, разбором списка литературы, делать выборку списков с нумерацией, выполнять разбор правил CSS или правил HTML.
Особенности строковых функций
Характерная черта современного программирования, особенно интернет-технологий, - описание и использование переменных без типа. Тип переменной определяется синтаксической конструкцией, в которой она применяется.
Этот момент позволяет использовать join & split JavaScript в качестве отличного инструмента трансформации любых данных в строчное представление. Далее строка данных помещается в файл или ячейку таблицы базы данных, а при необходимости возвращается и разбирается на необходимые данные.
Очень часто встречаются ситуации, когда строку невозможно сформировать в ходе анализа первичных данных. Используя стековые операции pop() и push можно формировать массивы данных, не придавая значения как, в какой момент времени и какое именно данное было предметом анализа.
Сформированный массив данных можно слить в единую строку по одному разделителю, но тут же разобрать по-другому. Самый простой пример: на вход поступает кодированный сигнал, каждый элемент которого соответствует массиву расшифровок или пояснений по кодам.
Разбирая входную строку, программист получает индексы ассоциативного массива, в котором находятся нужные расшифровки или пояснения.
Хорошая область применения для split JavaScript - преобразование шестнадцатеричных чисел в десятичные и обратно. Алгоритм даже не нужно составлять: разбор числа и формула преобразования. Никакого цикла, никакого анализа входного числа на корректность.
Объектно-ориентированные применения join & split
Помимо классических вариантов сериализации и десериализации методы join & split JavaScript могут использоваться, как основные синтаксические конструкции для реализации функционала объектов, ориентированного на область применения, и программирование «отношений» объектов между собой.
Для создания экземпляров объектов используются конструкторы, читающие строки символов и ячейки таблиц баз данных, но за пределами этих конструкторов не столь важно, откуда формируются внутренние данные экземпляра. При этом в результате чтения объекта может формироваться экземпляр любого типа.
Если экземпляры создаваемых объектов помещать в массив, то, используя особенности, например, метода pop(), можно работать с массивом как с объектом любого типа. Этот метод извлекает элемент из массива, а при следующем обращении извлекает следующий. Последовательность этих извлечений дает возможность работать со всеми экземплярами массива одинаковым образом, не придавая значения тому, какой именно объект находится в работе.