@Katya1111

IndexOf (Java Script)?

Здравствуйте всем!
Помогите, пожалуйста, разобраться.
Или я неправильно поняла или здесь опечатка. (Хотя, скорее всего неправильно поняла)

В документации написано, что в
str.indexOf(searchValue[, fromIndex])
searchValue - это, насколько я поняла, кусок строки, индекс начала которой нужно найти в целой строке,
а fromIndex - это индекс, откуда надо начинать отсчёт.

ВОПРОС:
'Синий кит'.indexOf('кит', 0); // вернёт 6
Нужно найти индекс начала слова "кит" в целой строке "Синий кит", где точка отсчёта - это индекс 0 Получается 6.
С - 0, и - 1, н - 2, и - 3, й - 4, пробел - 5, к - 6.
С этим понятно.
---
Почему здесь ответ тоже 6, когда точка отсчета - индекс 5?
'Синий кит'.indexOf('кит', 5); // вернёт 6

Откуда идёт счёт? Что-то вообще не понятно )

Вот ещё:
'Синий кит'.indexOf('', 9); // вернёт 9
'Синий кит'.indexOf('', 10); // вернёт 9

Почему 9?

Спасибо заранее!
  • Вопрос задан
  • 110 просмотров
Решения вопроса 2
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Все правильно получается. Ведь он возвращает позицию символа в переданной строке, а второй аргумент не режет строку, он просто задает начало писка в нужного символа, он не повлияет на возвращаемое значение (только на поиск). Получаете вы именно номер символа в вашей строке.
UPD:
По поводу

'Синий кит'.indexOf('', 9); // вернёт 9
'Синий кит'.indexOf('', 10); // вернёт 9

Тут ситуация в том, что номер начала поиска больше или равен длине строки (в котором ищем). А по спецификации, если искомая строка имеет нулевую длину, а начальный индекс поиска больше или равен длинны исходной строки, то всегда возвращается начальный индекс поиска. Если вы сделаете так:
'Синий кит'.indexOf('C', 10);
То искомая строка уже не с нулевой длинной, и если начальный поиск больше или равен длине строки, то по спецификации всегда возвращается -1.

Надеюсь правильно объяснил, если что, спрашивайте.
Ответ написан
KickeRocK
@KickeRocK
FrontFinish
'Синий кит'.indexOf('кит', 5); // вернёт 6
'Синий кит'.indexOf('', 9); // вернёт 9
'Синий кит'.indexOf('', 10); // вернёт 9
Верно ведь. Он возвращает то, где искомый символ.
Вот более наглядно:
'Сикит кит'.indexOf('кит', 5); // вернёт 6
Т.е. В первых 5 не идёт поиск, но их индексы учитываются.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы