[英]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
您正在学习编程还是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.