Home > database >  javascript : Check if there is an array member in the entered text
javascript : Check if there is an array member in the entered text

Time:10-10

I have an array of words and I want to check the entered text so that if one of the array elements is in this text, it will show me that element

and in this function I want to check it:

exports.words = (text)=>{
        const words = [
                'word1' , 
                'word2' , 
                'word3' , 
                'word4'
        ];
        for (let i = 0; i < words.length; i  ) {
            const el = words[i];
            if(el.includes(text)){
                return el;
            }else{
                return 'no words'
            }
        }
}

the problem is this function just return the first element (word1) And if I enter word2 or word3 in text, it returns 'no words', even though it is in the array

so how can I fix this problem?

CodePudding user response:

The issue is in the else block inside the loop, the function is returning after executing the first iteration.

You should return no words from out side of the for loop which will guarantee the full loop execution if no match found:

var words = (text)=>{
  const words = ['word1','word2','word3','word4'];
  for (let i = 0; i < words.length; i  ) {
      const el = words[i];
      if(el.includes(text)){
          return el;
      }      
  }
  return 'no words'; //return here
}

console.log(words('word2')); //word2
console.log(words('other')); //no words

CodePudding user response:

the problem is inside your for loop. You're returning 'no words' after only first item of an array checked, you're not even getting to second item.

return words.some(word => word === text) ? text : 'no words'

should do the job :)

  • Related