Написание функции indexOf на JavaScript - PullRequest
0 голосов
/ 28 апреля 2019

Я новичок в JavaScript.Я создал функцию indexof, но она не дает правильного вывода: Вопрос в том, чтобы: / * Реализовать функцию indexOf, которая принимает два параметра: строку и символ и возвращает первый индекс символа в строке.* /

Это мой код:

function indexOf(string, character) {
  let result = string;
  let i = 0;
  let output = 1;

  while (i < result.length) {
    if (result[i] === character) {
      output = output + indexOf[i];
    }
  }

  return output;
}

Я хочу знать, что я делаю неправильно.Пожалуйста, помогите.

Ответы [ 3 ]

3 голосов
/ 28 апреля 2019

Вы делаете вещи немного сложнее, чем нужно. Если вы хотите сделать это без вызова встроенного indexOf(), который, как я полагаю, является точкой упражнения, вам просто нужно return из функции, как только ваше условие будет соответствовать. В инструкциях говорится: «верните первый индекс » - это i в вашем цикле.

Если вы пройдете через цикл, не найдя чего-то, обычно возвращается -1:

function indexOf(string, character) {
    let i=0;
    while(i < string.length){
        if(string[i] == character){  // yes? just return the index i
            return i
        }
        i++                          // no? increase i and move on to next loop iteration
    }
    return -1;                       // made it through the loop and without returning. This means no match was found.
}
console.log(indexOf("Mark Was Here", "M"))
console.log(indexOf("Mark Was Here", "W"))
console.log(indexOf("Mark Was Here", "X"))
0 голосов
/ 28 апреля 2019

Исходя из вашего вопроса, что упражнение состоит в том, чтобы соответствовать только первому вхождению символа, а не подстроке (несколько символов в строке), тогда наиболее прямым способом сделать это будет следующее:

const indexOf = (word, character) => {
  for (let i = 0; i < word.length; i++) {
    if (word[i] === character) {
      return i;
    }
  }

  return -1;
}

Если вам также нужно сопоставить подстроки, оставьте комментарий к этому ответу, если вы не можете понять его, и я помогу вам.

0 голосов
/ 28 апреля 2019

indexOf () - это встроенный метод для строк, который сообщает вам индекс конкретного символа в слове. Обратите внимание, что это всегда будет возвращать индекс ПЕРВОГО совпадающего символа .-

Вы можете написать что-то вроде:

function indexOf(string, character){
   return string.indexOf(character)
}

Так что, если бы я использовал свою функцию и передал два обязательных аргумента:

indexOf("woof", "o") //this would return 1
...