MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-survey

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

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

Синтаксис

str.indexOf(searchValue[, fromIndex])

Параметри

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

Вертає

Індекс першого знайденого збігу, або -1, якщо жодного збігу не знайдено. Якщо рядок searchValue є порожнім, збігом вважатиметься індекс, з якого пошук розпочато.

Опис

Символи рядка (назвемо його 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.
Draft  

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

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support Yes Yes Yes Yes Yes Yes
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support Yes Yes Yes Yes Yes Yes ?

Див. також

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

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