繁体   English   中英

如果字符串包含Javascript中的特定字符,则返回true

[英]Return true is string contains specific character in Javascript

刚学习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"));

当我运行它时,它将返回“ false”,但是,如果将“ n”更改为“ I”,它将返回“ true”。 因此,也许只检查字符串的第一个字符?

谢谢您的帮助。

问候

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

return false;移为return false; 在循环之外。 如果在字符串中找到char,它将打破循环,并返回true 如果循环结束而不返回,它将返回false

 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")); 

只需使用indexOf

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

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

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

您正在学习编程还是JS?

如果您正在学习JS,则可以

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

代码不起作用的原因是,如果条件为true,则该函数将仅返回false。

你需要做

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) { for(var i = 0; i < str.length; i++) { if (str[i] == char) { return true; } } return false; }; console.log(hasEl("I am Batman", "n")); 

或者你也可以使用它

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

您的代码的问题在于,它在循环的每一轮else运行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。 其余的应该是不言自明的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM