Метод 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
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Basic support Yes Yes Yes Yes Yes Yes Yes

Див. також

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

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