0

I am new to JavaScript. I have created a indexof function in but it is not giving the correct output: Question is: /* Implement a function called indexOf that accepts two parameters: a string and a character, and returns the first index of character in the string. */

This is my code:

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;
}

I want to know what i am doing wrong. Please Help.

5 Answers 5

3

You are making things a little harder than you need to. If you want to do this without calling the built-in indexOf(), which I assume is the point of the exercise, you just need to return from the function as soon as your condition matches. The instructions say "return the first index" — that's the i in your loop.

If you make it through the loop without finding something it's traditional to return -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"))

Sign up to request clarification or add additional context in comments.

Comments

0

Assuming from your question that the exercise is to only match the first occurrence of a character and not a substring (multiple characters in a row), then the most direct way to do it is the following:

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

  return -1;
}

If you also need to match substrings, leave a comment on this answer if you can't figure it out and I'll help you along.

Comments

0

indexOf() is a built in method for strings that tells you the index of a particular character in a word. Note that this will always return the index of the FIRST matching character.-

You can write something like:

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

So if I were to use my function and pass in the two required arguments:

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

Comments

0

This code can be instead of indexOf(), the first param for the word u wants to search in and the second param for the string u want to search with.

function insteadIndexOF(mainWord,checkerWord){
  let one = ''
  let two = ''
  for(let i = 0 ; i < checkerWord.length ; i++){
    one += mainWord[i]
    two += checkerWord[i]
  }
  if(one === two ){
    return 0
  }
  return -1
}

Comments

0
const arr = ["I", "study", "JavaScript"];

function indexOf(str){
  for (let i = 0; i< arr.length; i++) {
    if (str === arr[i]) {
      return i
    }
  }
  return -1;

}
console.log(indexOf("JavaScript"))

1 Comment

This is almost the same code (except for array declaration and console output) as in stackoverflow.com/a/77472166

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.