String.prototype.indexOf()
Метод indexOf()
починає пошук від символа за індексом fromIndex
всередині об'єкта
, з якого здійснюється виклик метода, і вертає індекс першого знайденого збігу із шуканим значенням. Якщо значення не знайдене, повертає String
-1
.
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
має подібний метод indexOf()
.Синтаксис
str.indexOf(searchValue[, fromIndex])
Параметри
searchValue
- Рядок, що є шуканим значенням.
- Якщо рядок явно не заданий, searchValue буде примусово приведений до
"undefined"
, і пошук цього значення буде здійснюватись уstr
. - Отже, для прикладу:
'undefined'.indexOf()
поверне0
, оскільки значення undefined знайдене на позиції0
, але'undefine'.indexOf()
поверне-1
, оскільки рядок"undefine"
не знайдений. fromIndex
Optional- Ціле число, що позначає індекс, з якого має розпочинатися пошук; за замовчуванням дорівнює
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
Специфікації
Специфікація |
---|
ECMAScript (ECMA-262) The definition of 'String.prototype.indexOf' in that specification. |
Підтримка веб-переглядачами
BCD tables only load in the browser