We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

Сводка

Метод indexOf() возвращает индекс первого вхождения указанного значения в строковый объект String, на котором он был вызван, начиная с индекса fromIndex. Возвращает -1, если значение не найдено.

Синтаксис

str.indexOf(searchValue[, fromIndex])

Параметры

searchValue
Строка, представляющая искомое значение.
fromIndex
Необязательный параметр. Местоположение внутри строки, откуда начинать поиск. Может быть любым целым числом. Значение по умолчанию установлено в 0. Если fromIndex < 0, поиск ведётся по всей строке (так же, как если бы был передан 0). Если fromIndex >= str.length, метод вернёт -1, но только в том случае, если searchValue не равен пустой строке, в этом случае он вернёт str.length.

Описание

Символы в строке идут слева направо. Индекс первого символа равен 0, а последнего символа в строке stringName равен stringName.length - 1.

'Синий кит'.indexOf('Синий');   // вернёт  0
'Синий кит'.indexOf('Голубой');  // вернёт -1
'Синий кит'.indexOf('кит', 0);    // вернёт  6
'Синий кит'.indexOf('кит', 5);    // вернёт  6
'Синий кит'.indexOf('', 8);       // вернёт  8
'Синий кит'.indexOf('', 9);      // вернёт 9
'Синий кит'.indexOf('', 10);      // вернёт 9

Регистрозависимость

Метод indexOf() является регистрозависимым. Например, следующее выражение вернёт -1:

'Синий кит'.indexOf('синий'); // вернёт -1

Проверка на вхождение

Обратите внимание, что значение 0 не вычисляется в true, а значение -1 не вычисляется в false. Поэтому, для проверки того, что конкретная строка содержится в другой строке, правильно делать так:

'Синий кит'.indexOf('Синий') !== -1; // true
'Синий кит'.indexOf('Голубой') !== -1; // false

Примеры

Пример: использование методов indexOf() и lastIndexOf()

В следующем примере используются методы indexOf() и lastIndexOf() для нахождения значений в строке "Дивный новый мир".

var anyString = 'Дивный новый мир';

console.log('Индекс первого вхождения «й» с начала строки равен ' + anyString.indexOf('й'));
// Отобразит 5
console.log('Индекс первого вхождения «й» с конца строки равен ' + anyString.lastIndexOf('й'));
// Отобразит 11

console.log('Индекс вхождения «новый» с начала строки равен ' + anyString.indexOf('новый'));
// Отобразит 7
console.log('Индекс вхождения «новый» с конца строки равен ' + anyString.lastIndexOf('новый'));
// Отобразит 7

Пример: метод indexOf() и регистрозависимость

В следующем примере определяются две строковых переменных. Переменные содержат одинаковые строки, за исключение того, что слова во второй строке начинаются с заглавных букв. Первый вызов метода console.log() отобразит 18. Но поскольку метод indexOf() является регистрозависимым, строка "чеддер" в переменной myCapString не будет найдена, так что второй вызов метода console.log() отобразит -1.

var myString    = 'бри, пеппер джек, чеддер';
var myCapString = 'Бри, Пеппер Джек, Чеддер';

console.log('Вызов myString.indexOf("чеддер") вернул ' + myString.indexOf('чеддер'));
// Отобразит 18
console.log('Вызов myCapString.indexOf("чеддер") вернул ' + myCapString.indexOf('чеддер'));
// Отобразит -1

Пример: использование метода indexOf() для подсчёта вхождений буквы в строку

Следующий пример устанавливает значение переменной count в количество вхождений буквы в в строку str:

var str = 'Быть или не быть, вот в чём вопрос.';
var count = 0;
var pos = str.indexOf('в');

while (pos !== -1) {
  count++;
  pos = str.indexOf('в', pos + 1);
}

console.log(count); // отобразит 3

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

Спецификация Статус Комментарии
ECMAScript 1-е издание. Стандарт Изначальное определение.
ECMAScript 5.1 (ECMA-262)
Определение 'String.prototype.indexOf' в этой спецификации.
Стандарт  
ECMAScript 2015 (6th Edition, ECMA-262)
Определение 'String.prototype.indexOf' в этой спецификации.
Стандарт  

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

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Возможность Chrome Firefox (Gecko) Internet Explorer Opera Safari
Базовая поддержка (Да) (Да) (Да) (Да) (Да)
Возможность Android Chrome для Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Базовая поддержка (Да) (Да) (Да) (Да) (Да) (Да)

Смотрите также

Метки документа и участники

Внесли вклад в эту страницу: expeerd, Mingun
Обновлялась последний раз: expeerd,