Почему IndexOf возвращает -1? - PullRequest
17 голосов
/ 21 декабря 2011

Я изучаю Javascript и не понимаю, почему indexOf ниже возвращает -1:

var string = "The quick brown fox jumps over the lazy dog";

console.log (string.indexOf("good"));

Ответы [ 5 ]

28 голосов
/ 21 декабря 2011

-1 означает «совпадение не найдено».

Причина, по которой он возвращает -1 вместо «ложь», заключается в том, что стрелка в начале строки будет в положении 0, что эквивалентно ложномув JavaScriptПоэтому возвращение -1 гарантирует, что вы знаете, что на самом деле совпадения нет.

8 голосов
/ 21 декабря 2011

Поскольку массивы основаны на 0, возвращение 0 будет означать, что совпадение с первым символом совпадает;1, второй персонаж и так далее.Это означает, что все 0 и выше будет истинным или «найденным» ответом.Чтобы сохранить все в целочисленной категории, -1 означает, что совпадений не найдено.

8 голосов
/ 21 декабря 2011

-1 означает, что совпадение не найдено. «хорошо» не в этом предложении. Это задокументировано поведение .

Метод indexOf() возвращает первый индекс, по которому данный элемент может быть найден в массиве, или -1, если его нет.

2 голосов
/ 13 марта 2017

Существует еще одна причина, по которой indexOf возвращает -1, если совпадений не найдено. Рассмотрим код ниже:

if (~str.indexOf(pattern)){
  console.log('found')
}else{
  console.log('not found')
}

Поскольку ~ (-1) = 0, поэтому тот факт, что indexOf, возвращающий -1, облегчает запись, если ... еще используя ~.

0 голосов
/ 21 декабря 2011

Поиск никогда не находит того, что он ищет («хорошего» нет в предложении), и -1 - возвращаемое значение по умолчанию.

http://www.w3schools.com/jsref/jsref_indexof.asp

...