2017-01-02 142 views
0

刚刚学习JS和我试图回答以下问题:编写一个函数,需要2个输入(字符串和字符),使用for循环,将返回true,如果字符在字符串中找到。返回true是字符串包含特定字符在Javascript中

这里是我想出了:

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

这将返回“假”当我运行它,但是,如果我改变了“N”到“I”则返回“真”。所以也许它只是检查字符串的第一个字符?

谢谢你的帮助。

问候

+0

除了循环,你还可以像'str.includes(char)'那样做。 – Redu

回答

1

如果第一个字符是不是要求之一,if会失败,并且else块将立即返回false

return false;移到循环外部。如果在字符串中找到字符,它将打破循环,并返回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"));

1

只需使用的indexOf

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

虽然这是一个有效的替代方案,但它无法解释原始发布代码无法工作的原因。 –

+0

我想@Ori Drori已经解释了为什么,如果第一个字符不是必需字符,则OP从函数返回 – deathangel908

0

你学习编程或JS?

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

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

你的代码是不工作,因为如果条件为真究其原因,该功能将只返回false。

你需要做的

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

,或者你可以用这个也

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

+0

请花时间解释 - 在您的答案中 - 此答案的工作原理和原因;向OP投掷代码并说'试试这个'几乎没有任何教训。 –

0

您的代码存在的问题是,它在循环的每一轮中都会运行elseretun 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函数中的内置函数工作,通常返回ind在函数用作方法的字符串中的特定字符串(在本例中只有一个字符)。但是,如果在字符串中未找到字符,则函数返回-1。其余的应该是不言自明的。

相关问题