用JavaScript编写indexOf函数

时间:2019-04-27 22:07:39

标签: javascript indexof

我是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 个答案:

答案 0 :(得分:3)

您正在使事情变得比您需要的难。如果您要执行此操作而不调用内置的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"))

答案 1 :(得分:0)

indexOf()是字符串的内置方法,它告诉您单词中特定字符的索引。请注意,这将始终返回FIRST匹配字符的索引。-

您可以编写如下内容:

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

因此,如果我要使用函数并传入两个必需的参数:

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

答案 2 :(得分:0)

假设您的问题是练习仅匹配字符的第一个匹配项,而不匹配子字符串(连续多个字符),那么最直接的方法是:

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

  return -1;
}

如果您还需要匹配子字符串,如果您找不到答案,请在此答案上留下评论,我会帮助您。