返回true是字符串包含Javascript中的特定字符

时间:2017-01-02 19:34:50

标签: javascript function for-loop

刚刚学习JS而我正试图回答以下问题:编写一个带有2个输入(字符串和字符)的函数,使用for循环,如果在字符串中找到该字符,则返回true。

以下是我提出的建议:

var hasEl = function(str, char) {
  for(var i = 0; i < str.length; i++) {
    if (str[i] == char) {
      return true;
    } else {
      return false;
    }
  }
};
console.log(hasEl("I am Batman", "n"));

这会返回&#39; false&#39;然而,当我运行它时,如果我改变了&#34; n&#34;到&#34;我&#34;它返回&#39; true&#39;。那么也许它只检查字符串的第一个字符?

感谢您的帮助。

此致

6 个答案:

答案 0 :(得分:1)

如果第一个字符不是请求的字符,则if将失败,else块将立即返回false

return false;移到循环外部。如果在字符串中找到char,它将中断循环,并返回true。如果循环结束而没有返回,它将返回false

&#13;
&#13;
var hasEl = function(str, char) {
  for(var i = 0; i < str.length; i++) {
    if (str[i] == char) {
      return true;
    }
  }
  
  return false;
};
console.log(hasEl("I am Batman", "n"));
&#13;
&#13;
&#13;

答案 1 :(得分:1)

只需使用indexOf

"asd".indexOf('a') >= 0

答案 2 :(得分:0)

更好的方法是使用字符串上的.indexOf()方法。如果没有找到它将返回-1

http://www.w3schools.com/jsref/jsref_indexof.asp

答案 3 :(得分:0)

你在学习编程还是JS?

如果你正在学习JS,你可以做到

gson

您的代码无效的原因,因为如果条件为真,则函数将返回false。

你需要做

const hasEl = (str, c) => str.includes(c);

答案 4 :(得分:0)

尝试此代码

&#13;
&#13;
var hasEl = function(str, char) {
  for(var i = 0; i < str.length; i++) {
    if (str[i] == char) {
      return true;
    }
  }
  
  return false;
};
console.log(hasEl("I am Batman", "n"));
&#13;
&#13;
&#13;

或者您也可以使用

&#13;
&#13;
var hasEl = function(str, char) {
    if (str.indexOf(char)!=-1) {
      return true;
    }
  return false;
};
console.log(hasEl("I am Batman", "n"));
&#13;
&#13;
&#13;

答案 5 :(得分:0)

您的代码存在的问题是,它在每一轮循环中运行else或更确切地说retun false语句。但只要只执行一个return语句,整个函数就会停止......所以你可以按如下方式改变你的函数:

var hasEl = function(str, char) {
  for(var i = 0; i < str.length; i++) {
    if (str[i] == char) {
      return true;
    }
  }
  return false;
};

然而,有一种更简单的方法来实现相同的解决方案:

var hasEl = function(str, char) {
  if(str.indexOf(char)==-1){
    return false;
  }else{
    return true;
  }
};

它使用indexOf函数中的构建工作,它通常返回字符串中特定字符串的索引(在本例中只是一个char),该函数用作方法。但是,如果在字符串中找不到char,则函数返回-1。其余的应该是不言自明的。

相关问题