--- 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")}}