String.prototype.indexOf()
Базовая поддержка Широко доступно
Эта возможность хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.
Метод indexOf() значений String ищет в данной строке и возвращает индекс первого вхождения указанной подстроки. Он принимает необязательную начальную позицию и возвращает первое вхождение указанной подстроки по индексу, большему или равному указанному числу.
Попробовать
const paragraph = "I think Ruth's dog is cuter than your dog!";
const searchTerm = "dog";
const indexOfFirst = paragraph.indexOf(searchTerm);
console.log(`The index of the first "${searchTerm}" is ${indexOfFirst}`);
// Expected output: "The index of the first "dog" is 15"
console.log(
`The index of the second "${searchTerm}" is ${paragraph.indexOf(
searchTerm,
indexOfFirst + 1,
)}`,
);
// Expected output: "The index of the second "dog" is 38"
Синтаксис
indexOf(searchString) indexOf(searchString, position)
Параметры
-
searchString - Подстрока для поиска. Все значения приводятся к строкам, поэтому пропуск или передача
undefinedприводит к тому, чтоindexOf()будет искать строку"undefined", что редко является желаемым результатом. -
positionНеобязательный - Метод возвращает индекс первого вхождения указанной подстроки в позиции, большей или равной
position, которая по умолчанию равна0. Еслиpositionбольше длины вызывающей строки, метод вообще не ищет в вызывающей строке. Еслиpositionменьше нуля, метод ведет себя так, как если быpositionбыло0.-
'hello world hello'.indexOf('o', -5)возвращает4— потому что это заставляет метод вести себя так, как если бы второй аргумент был0, и первое вхождениеoв позиции, большей или равной0, находится в позиции4. -
'hello world hello'.indexOf('world', 12)возвращает-1— потому что, хотя подстрокаworldдействительно встречается по индексу6, эта позиция не больше или не равна12. -
'hello world hello'.indexOf('o', 99)возвращает-1— потому что99больше длиныhello world hello, что приводит к тому, что метод вообще не ищет в строке.
-
Возвращаемое значение
Индекс первого найденного вхождения searchString или -1, если не найдено.
Возвращаемое значение при использовании пустой строки поиска
Поиск пустой строки дает странные результаты. Если второй аргумент отсутствует, или если его значение меньше длины вызывающей строки, возвращаемое значение совпадает со значением второго аргумента:
"hello world".indexOf(""); // returns 0
"hello world".indexOf("", 0); // returns 0
"hello world".indexOf("", 3); // returns 3
"hello world".indexOf("", 8); // returns 8
Однако, если значение второго аргумента больше или равно длине строки, возвращаемое значение равно длине строки:
"hello world".indexOf("", 11); // returns 11
"hello world".indexOf("", 13); // returns 11
"hello world".indexOf("", 22); // returns 11
В первом случае метод ведет себя так, как если бы он нашел пустую строку сразу после позиции, указанной во втором аргументе. Во втором случае метод ведет себя так, как если бы он нашел пустую строку в конце вызывающей строки.
Описание
Строки имеют нулевую индексацию: индекс первого символа строки равен 0, а индекс последнего символа строки — это длина строки минус 1.
"Blue Whale".indexOf("Blue"); // returns 0
"Blue Whale".indexOf("Wale"); // returns -1
"Blue Whale".indexOf("Whale", 0); // returns 5
"Blue Whale".indexOf("Whale", 5); // returns 5
"Blue Whale".indexOf("Whale", 7); // returns -1
"Blue Whale".indexOf(""); // returns 0
"Blue Whale".indexOf("", 9); // returns 9
"Blue Whale".indexOf("", 10); // returns 10
"Blue Whale".indexOf("", 11); // returns 10
Метод indexOf() чувствителен к регистру. Например, следующее выражение возвращает -1:
"Blue Whale".indexOf("blue"); // returns -1
Проверка вхождений
При проверке, встречается ли конкретная подстрока в строке, правильный способ проверить это — протестировать, равно ли возвращаемое значение -1:
"Blue Whale".indexOf("Blue") !== -1; // true; found 'Blue' in 'Blue Whale'
"Blue Whale".indexOf("Wale") !== -1; // false; no 'Wale' in 'Blue Whale'
Примеры
Использование indexOf()
Следующий пример использует indexOf() для поиска подстрок в строке "Brave new world".
const str = "Brave new world";
console.log(str.indexOf("w")); // 8
console.log(str.indexOf("new")); // 6
indexOf() и чувствительность к регистру
В следующем примере определяются две строковые переменные.
Переменные содержат одну и ту же строку, за исключением того, что вторая строка содержит буквы в верхнем регистре. Первый метод console.log() отображает 19. Но поскольку метод indexOf() чувствителен к регистру, строка "cheddar" не найдена в myCapString, поэтому второй метод console.log() отображает -1.
const myString = "brie, pepper jack, cheddar";
const myCapString = "Brie, Pepper Jack, Cheddar";
console.log(myString.indexOf("cheddar")); // 19
console.log(myCapString.indexOf("cheddar")); // -1
Использование indexOf() для подсчета вхождений буквы в строке
Следующий пример присваивает count количеству вхождений буквы e в строке str:
const str = "To be, or not to be, that is the question.";
let count = 0;
let position = str.indexOf("e");
while (position !== -1) {
count++;
position = str.indexOf("e", position + 1);
}
console.log(count); // 4
Спецификации
Совместимость с браузерами
| Десктопные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
indexOf |
1 |
12 |
1 |
3 |
1 |
18 |
4 |
10.1 |
1 |
1.0 |
4.4 |
1 |
1.0.0 |
1.0 |
0.10.0 |
Смотрите также
String.prototype.charAt()String.prototype.lastIndexOf()String.prototype.includes()String.prototype.split()Array.prototype.indexOf()
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf