刚刚学习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;。那么也许它只检查字符串的第一个字符?
感谢您的帮助。
此致
答案 0 :(得分:1)
如果第一个字符不是请求的字符,则if
将失败,else
块将立即返回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"));
&#13;
答案 1 :(得分:1)
只需使用indexOf
"asd".indexOf('a') >= 0
答案 2 :(得分:0)
更好的方法是使用字符串上的.indexOf()方法。如果没有找到它将返回-1
答案 3 :(得分:0)
你在学习编程还是JS?
如果你正在学习JS,你可以做到
gson
您的代码无效的原因,因为如果条件为真,则函数将返回false。
你需要做
const hasEl = (str, c) => str.includes(c);
答案 4 :(得分:0)
尝试此代码
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;
或者您也可以使用
var hasEl = function(str, char) {
if (str.indexOf(char)!=-1) {
return true;
}
return false;
};
console.log(hasEl("I am Batman", "n"));
&#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。其余的应该是不言自明的。