JavaScript - уникальный язык программирования и неотъемлемая составляющая браузера, его синтаксис и семантика настолько органично воплощают в себе лучшие традиции современной разработки алгоритмов, что во многом являются примером для других языков, представляющих аналогичные возможности в более громоздком варианте.
Метод indexOf JavaScript не позиционирует как операцию поиска, но с ее помощью можно определить, где находится символ или подстрока в строке. Этот же метод применим к обычным массивам.
Общее описание метода
Вам будет интересно:SSH-туннели: настройка, использование
Общий стиль синтаксиса JavaScript определяет, что у строк и массивов есть метод indexOf, который вычисляет, где начинается искомая подстрока (или просто символ) в строке, где этот метод был применен.
В контексте общей логики языка число может автоматически преобразовываться в тип данных «строка». Язык предоставляет программисту описатель «var» без возможности уточнения, какой именно тип данных нужно было описать. Возможность манипулирования типами данных - замечательное качество JavaScript.
При описании переменной программист может указать начальное значение и, соответственно, установить её тип, но в нужный момент времени этот тип изменится в соответствии с требованиями конструкции или выражения, где переменная будет использована.
Пример применения метода
Описано три переменных: строка символов - «str», обычный массив - «arr» и ассоциативный массив - «ass». На веб-странице имеется див с id='scCurrInfo', в который будет помещен результат. Метод indexOf JavaScript предоставляет для строк и обычных массивов.
Все примеры выборки (поиска) подстрок приведены в эквивалентном использовании. Исходные данные представлены одинаковым образом.
Использование на JavaScript indexOf array подобно чисто строчному варианту: если бы этот массив был представлен строкой - эффект был бы аналогичным. И хотя строчное представление данных, во многих случаях, эффективнее применения массивов, применение метода indexOf для данных типа array также имеет смысл.
Результат исполнения приведенного кода показывает очевидное соответствие между применением метода к обычным массивам и классический вариант JavaScript: indexOf string.
Ассоциативные массивы отличаются своей природой, относятся к особенной логике объектно-ориентированного программирования на этом языке. К ним метод indexOf неприменим.
Правила применения метода
Вне зависимости к чему (строка, массив) применяется метод indexOf, JavaScript разрешает указывать вторым параметром число: позицию, после которой следует искать вхождение нужной подстроки (символа).
Поиск всегда идет до первого вхождения, то есть результатом метода будет число: позиция (индекс массива), с которой начинается искомая подстрока (символ). Отсчет позиции и индекса массива начинается с нуля.
Если в строке или массиве ничего не будет найдено, результатом будет отрицательное значение - «-1».
Синтаксис языка допускает любую, синтаксически корректную, комбинацию методов и результатов их исполнения. Проще говоря, нет необходимости вводить новые переменные. Можно использовать метод в любых сочетаниях с другими методами. Можно получить из дерева DOM какой-либо текстовый элемент, массив дивов или иную совокупность данных и indexOf JavaScript применить в точном соответствии с его назначением.
Эффективные варианты обработки данных
Синтаксис и семантика JavaScript, особенно в отношении объектно-ориентированного программирования, заслуживают уважения, однако это не мешает разработчику формулировать свои алгоритмы согласно его «собственной семантике».
Любая задача несет в себе уникальный смысл, который можно уложить в предлагаемые языком структуры данных и конструкции их обработки. Но гораздо проще строить объекты решаемой задачи, и в их терминах формулировать её решение.
Это не только более эффективный результат, но и более понимаемый алгоритм, меньшее количество ошибок в коде и хорошая модифицируемость результата впоследствии: не будет необходимости вспоминать: что было сделано и зачем.
В программировании очень важен понятный и читаемый код, особенно, когда предстоит его дальнейшее развитие через некоторое время.
В этом контексте программист может представить данные в обычных строках, строки разместить в объектах, а смысловую нагрузку разместить по методам, которые через indexOf будут выбирать нужные элементы в нужное время.