Метод indexOf() починає пошук від символа за індексом fromIndex всередині об'єкта String, з якого здійснюється виклик метода, і вертає індекс першого знайденого збігу із шуканим значенням.

Зауваження: Клас Array має власний подібний метод indexOf().

Синтаксис

str.indexOf(searchValue[, fromIndex])

Параметри

searchValue
Рядок, що є шуканим значенням.
fromIndex Optional
Ціле число, що зазначає індекс, з якого слід розпочинати пошук; типовим значенням є 0. Якщо fromIndex <= 0, пошук здійснюється від початку рядка. Якщо fromIndex >= str.length, пошук не здійснюється і метод одразу вертає значення -1. Якщо шуканий рядок searchValue є порожнім, то поведінка буде наступною: для fromIndex < str.length вертається max(fromIndex, 0), а для fromIndex >= str.length вертається str.length.

Вертає

Індекс першого знайденого збігу; якщо збігу не знайдено, вертає значення -1.

Опис

Символи рядка (назвемо його str) мають індекси (зліва направо) від 0 (перший) до str.length - 1 (останній). Це стосується і параметра fromIndex, і значення, яке вертає метод:

'Непозбувна бентега'.indexOf('Непозбувна');     // вертає  0
'Непозбувна бентега'.indexOf('Непозбувний');    // вертає -1
'Непозбувна бентега'.indexOf('Непозбувна', 1);  // вертає -1

'Непозбувна бентега'.indexOf('бентега', 1);     // вертає 11
'Непозбувна бентега'.indexOf('бентега', 11);    // вертає 11
'Непозбувна бентега'.indexOf('бентега', 12);    // вертає -1

Порожній підрядок можна «знайти» в будь-якій частині рядка:

'Розкішниця'.indexOf('');      // вертає  0
'Розкішниця'.indexOf('', 9);   // вертає  9
'Розкішниця'.indexOf('', 10);  // вертає 10
'Розкішниця'.indexOf('', 11);  // вертає 10

Зважте на те, що метод indexOf() є регістрозалежним. Наприклад, наступний вираз повертає -1:

'Непозбувна бентега'.indexOf('Бентега');  // вертає -1

Перевірка наявності підрядка

Зважте на те, що для перевірки наявності підрядка не можна обмежитись стислим виразом if (str.indexOf(substr)), оскільки значення 0 не перетворюється на true, а -1 не перетворюється на false. Отже, належить у явний спосіб порівнювати значення, що повертається методом indexOf(), із значенням -1:

'Непозбувна бентега'.indexOf('бентега') !== -1; // true
'Непозбувна бентега'.indexOf('Бентега') !== -1; // false

Приклади

Використання indexOf() та lastIndexOf()

Наступний приклад наочно показує відмінність між використанням indexOf() та lastIndexOf() за однакових обставин:

'абабагаламага'.indexOf('га');       // вертає 5
'абабагаламага'.lastIndexOf('га');   // вертає 11

'абабагаламага'.indexOf('баба');     // вертає 1
'абабагаламага'.lastIndexOf('баба'); // вертає 1

Регістрозалежність метода indexOf()

В наступному прикладі наведено два текстових рядки. Їх вміст є майже однаковим, але в strCapitalized слова починаються з великої літери, а в str — з малої. В обох рядках ми за допомогою indexOf() шукаємо підрядок "камамбер", але дається взнаки регістрозалежність метода, а отже str містить шуканий підрядок, а strCapitalized — ні:

var str = 'брі, дорблю, камамбер';
var strCapitalized = 'Брі, Дорблю, Камамбер';

str.indexOf('камамбер');             // вертає 13
strCapitalized.indexOf('камамбер');  // вертає -1

Використання indexOf() для підрахунку кількості вживань літери у рядку

В наступному прикладі наведено функцію, що за допомогою метода indexOf() рахує кількість вживань певної літери (або навіть підрядка) в рядку, щоразу посуваючи далі індекс символа, з якого пошук починається (параметр fromIndex):

function countOccurrences(string, c) {
  var count = 0;
  var pos = string.indexOf(c);

  while (pos >= 0) {
    count++;
    pos = string.indexOf(c, pos + 1);
  }

  return count;
}

countOccurrences('Буває, часом сліпну від краси', 'с');  // вертає 3

Специфікації

Специфікація Статус Коментар
ECMAScript 1st Edition (ECMA-262) Standard Первинне визначення.
ECMAScript 5.1 (ECMA-262)
The definition of 'String.prototype.indexOf' in that specification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'String.prototype.indexOf' in that specification.
Standard  
ECMAScript Latest Draft (ECMA-262)
The definition of 'String.prototype.indexOf' in that specification.
Living Standard  

Підтримка веб-переглядачами

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic Support(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)
FeatureAndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Basic Support(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)

Див. також

Мітки документа й учасники

 Зробили внесок у цю сторінку: asmforce
 Востаннє оновлена: asmforce,