Spec-Zone.ru › JavaScript

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

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-string.prototype.indexof

Совместимость с браузерами

Десктопные Мобильные Серверные
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API