Я пытался решить проблему ниже:
Мой индекс:
Определите функцию myIndexOf, которая принимает три аргумента:
- источник (строка)
- searchValue (строка)
- startIdx (число) - необязательно
Если источник содержит searchValue, вернуть индекс, с которого начинается searchValue.
Если searchValue появляется более одного раза в источнике, вернуть индекс по первому вхождению searchValue. Если searchValue не существует в источнике, вернуть -1.
Если в функцию передан startIdx, игнорируйте все экземпляры searchValue, которые встречаются до этого индекса. Если startIdx не указан, начните поиск с начала источника.
Не используйте встроенный строковый метод .indexOf в своем ответе.
Я попробовал следующий код:
function myIndexOf(source, searchValue, startIdx=0){
for (i=startIdx; i<=source.length - searchValue.length; i++){
//console.log(source[i])
let subString = source.slice(i, i+searchValue.length);
if(subString === searchValue){
return i
}
else {
return -1
}
}
}
myIndexOf('twice twice', 'ice', 5);
Функция должна возвращать 8, но вместо этого она возвращает -1. Я знаю, что утверждение else, вероятно, является причиной ошибки, но я не понимаю, почему утверждение else не может быть там, где оно есть.