jаvascript - унікальний мова програмування і невід'ємна складова браузера, синтаксис і семантика настільки органічно втілюють у собі кращі традиції сучасної розробки алгоритмів, що багато в чому є прикладом для інших мов, що представляють аналогічні можливості в більш громіздкому варіанті.
Метод indexOf jаvascript не позиціонує як операцію пошуку, але з її допомогою можна визначити, де знаходиться символ або підрядок в рядку. Цей же метод застосуємо до звичайних масивів.
Загальний опис методу
Загальний стиль синтаксису jаvascript визначає, що у рядків і масивів є метод indexOf, який обчислює, де починається шукана підрядок (або просто символ) в рядку, де цей метод був застосований.
У контексті загальної логіки мови число може автоматично перетворюватися в тип даних «рядок». Мова надає програмісту описувач «var» без можливості уточнення, який саме тип даних потрібно було описати. Можливість маніпулювання типами даних - чудова якість jаvascript. При описі змінної програміст може вказати початкове значення і, відповідно, встановити її тип, але в потрібний момент часу цей тип зміниться у відповідності з вимогами конструкції або виразу, де змінна буде використана.
Приклад застосування методу
Описано три змінних: рядок символів - «str», звичайний масив - «arr» і асоціативний масив - «ass». На веб-сторінці є дів з id='scCurrInfo', в який буде поміщений результат. Метод indexOf jаvascript надає для рядків і звичайних масивів.
Всі приклади вибірки (пошуку) підрядків наведені в еквівалентному використанні. Вихідні дані представлені однаковим чином.
Використання jаvascript indexOf array подібно чисто рядковий варіанту: якби цей масив був представлений рядком - ефект був би аналогічним. І хоча рядкове представлення даних, в багатьох випадках, ефективніше застосування масивів, застосування методу indexOf для даних типу array також має сенс. Результат виконання наведеного коду показує очевидне відповідність між застосуванням методу до звичайних масивів і класичний варіант jаvascript: indexOf string.
Асоціативні масиви відрізняються своєю природою, відносяться до особливої логіки об'єктно-орієнтованого програмування на цій мові. До них метод indexOf непридатний.
Правила застосування методу
Незалежно до чого (рядок, масив) застосовується метод indexOf, jаvascript дозволяє вказувати другим параметром число: позицію, після якої слід шукати входження потрібної підрядка (символу). Пошук завжди йде до першого входження, тобто результатом методу буде число: позиція (індекс масиву), з якої починається шукана підрядок (символ). Відлік позиції та індексу масиву починається з нуля. Якщо в рядку чи масиві нічого не буде знайдено, результатом буде від'ємне значення - «-1».
Синтаксис мови допускає будь-яку, синтаксично коректні, комбінацію методів і результатів їх виконання. Простіше кажучи, немає необхідності вводити нові змінні. Можна використовувати метод в будь-яких поєднаннях з іншими методами. Можна отримати з дерева DOM який-небудь текст, масив дівов чи іншу сукупність даних і indexOf jаvascript застосувати в точній відповідності з його призначенням.
Ефективні варіанти обробки даних
Синтаксис і семантика jаvascript, особливо стосовно об'єктно-орієнтованого програмування, заслуговують поваги, однак це не заважає розробнику формулювати свої алгоритми згідно з його «власною семантикою». Будь-яка задача несе в собі унікальний сенс, який можна укласти в пропоновані мовою структури даних і конструкції їх обробки. Але набагато простіше будувати об'єкти розв'язуваної задачі, і в їх термінах формулювати її рішення. Це не тільки більш ефективний результат, але і більш зрозумілий алгоритм, меншу кількість помилок у коді і хороша можливість модифікацій результату згодом: не буде необхідності згадувати: що було зроблено і навіщо.
У програмуванні дуже важливий зрозумілий і читабельний код, особливо, коли доведеться його подальший розвиток через деякий час. У цьому контексті програміст може представити дані у звичайних рядках, рядки розмістити в об'єктах, а смислове навантаження розмістити за методами, які через indexOf будуть вибирати потрібні елементи в потрібний час.