--- title: String.prototype.indexOf() slug: Web/JavaScript/Reference/Global_Objects/String/indexOf tags: - JavaScript - Prototype - String - Довідка - метод translation_of: Web/JavaScript/Reference/Global_Objects/String/indexOf ---
Метод indexOf() починає пошук від символа за індексом fromIndex всередині об'єкта {{jsxref("String")}}, з якого здійснюється виклик метода, і вертає індекс першого знайденого збігу із шуканим значенням. Якщо значення не знайдене, повертає -1.
{{EmbedInteractiveExample("pages/js/string-indexof.html")}}
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Array має подібний метод {{jsxref("Array.prototype.indexOf()", "indexOf()")}}.str.indexOf(searchValue[, fromIndex])
searchValue"undefined", і пошук цього значення буде здійснюватись у str.'undefined'.indexOf() поверне 0, оскільки значення undefined знайдене на позиції 0, але 'undefine'.indexOf() поверне -1, оскільки рядок "undefine" не знайдений.fromIndex {{optional_inline}}0.fromIndex менше за 0 чи більше за str.length, пошук розпочнеться з індексу 0 та str.length, відповідно.'всім привіт'.indexOf('м', -5) поверне 3, оскільки метод почне пошук з позициї 0, а м знайдеться на позиції 3. З іншого боку, 'всім привіт'.indexOf('м', 11) (і з будь-яким значенням fromIndex, більшим за 11) поверне -1, оскільки пошук починається з позиції 11, позиції після кінця рідка.Індекс першого знайденого збігу з searchValue, або -1, якщо жодного збігу не знайдено.
Порожній рядок searchValue призводить до дивних результатів. За відсутності значення fromIndex, чи будь-якого значення fromIndex, нижчого за довжину рядка, повернене значення буде таким самим, як значення fromIndex:
'всім привіт'.indexOf('')    // вертає 0
'всім привіт'.indexOf('', 0) // вертає 0
'всім привіт'.indexOf('', 3) // вертає 3
'всім привіт'.indexOf('', 8) // вертає 8
Однак, якщо значення fromIndex є рівним або більшим за довжину рядка, повернене значення дорівнює довжині рядка:
'всім привіт'.indexOf('', 11) // вертає 11
'всім привіт'.indexOf('', 13) // вертає 11
'всім привіт'.indexOf('', 22) // вертає 11
В минулій версії JS порожній рядок відшукувався одразу після вказаного значення індексу. У останній версії JS порожній рядок буде знайдений в кінці рядка, в якому здійснюється пошук.
Символи рядка індексуються зліва направо. Індекс першого символу дорівнює 0, а індекс останнього символу рядка stringName дорівнює stringName.length - 1.
'Непозбувна бентега'.indexOf('Непозбувна');     // вертає  0
'Непозбувна бентега'.indexOf('Непозбувний');    // вертає -1
'Непозбувна бентега'.indexOf('бентега', 0);     // вертає 11
'Непозбувна бентега'.indexOf('бентега', 5);     // вертає 11
'Непозбувна бентега'.indexOf('бентега', 12);    // вертає -1
'Розкішниця'.indexOf('');                       // вертає  0
'Розкішниця'.indexOf('', 9);                    // вертає  9
'Розкішниця'.indexOf('', 10);                   // вертає 10
'Розкішниця'.indexOf('', 11);                   // вертає 10
Метод indexOf() є регістрозалежним. Наприклад, вираз нижче повертає -1:
'Непозбувна бентега'.indexOf('Бентега');  // вертає -1
Зважте на те, що 0 не обчислюється як true, а -1 не обчислюється як false. Отже, належить у явний спосіб порівнювати значення, що повертається методом indexOf(), зі значенням -1:
'Непозбувна бентега'.indexOf('бентега') !== -1;  // true
'Непозбувна бентега'.indexOf('Бентега') !== -1; // false
~('Непозбувна бентега'.indexOf('Непозбувний')) // 0, тобто, хибне значення
indexOf()Наступний приклад використовує indexOf(), щоб знайти значення у рядку "абабагаламага".
const str = 'абабагаламага'
console.log('Індекс першої г з початку дорівнює ' + str.indexOf('г'))   // виводить 5
console.log('Індекс "баба" з початку дорівнює ' + str.indexOf('баба'))   // виводить 1
indexOf()В цьому прикладі наведено два текстових рядки.
Їх вміст є майже однаковим, але у myCapString слова починаються з великої літери. Перший метод console.log() виводить 13. Але, через те, що метод indexOf() чутливий до регістру, рядок "камамбер" не знаходиться у myCapString, а отже, другий метод console.log() виводить -1.
var myString = 'брі, дорблю, камамбер';
var myCapString = 'Брі, Дорблю, Камамбер';
console.log('myString.indexOf("камамбер") дорівнює ' + myString.indexOf('камамбер'))
// виводить 13
console.log('myCapString.indexOf("камамбер") дорівнює ' + myCapString.indexOf('камамбер'))
// виводить -1
indexOf() для підрахунку кількості вживань літери у рядкуНаступний приклад присвоює змінній count число вживать літери с у рядку str:
const str = 'Буває, часом сліпну від краси.'
let count = 0
let position = str.indexOf('с')
while (position !== -1) {
  count++
  position = str.indexOf('с', position + 1)
}
console.log(count)  // виводить 3
| Специфікація | 
|---|
| {{SpecName('ESDraft', '#sec-string.prototype.indexof', 'String.prototype.indexOf')}} | 
{{Compat("javascript.builtins.String.indexOf")}}