我的OR运算符似乎不起作用 - 初学者级别



我正在做一些非常简单的事情。通过字符串来计算元音。后来我发现有一种更好的方法来编写我想要做的事情,但我觉得我的代码也应该达到同样的结果,即使它有点冗长。

这个问题似乎源于我的IF状况。我写if(array[I]==='a'||'e'|'I'|'o'|'u'(这个想法是检查字母是a、e还是i等。

如果我一次只找一个元音,它是有效的。但是,我认为使用OR运算符可以扩展条件以包括其他值。

不管怎样,我希望有人能够解释为什么它不起作用。我将在下面留下完整的代码。

答案是,它会返回我给它的任何句子的完整字母数。

function VowelCount(str) { 
str.toLowerCase();  
let count = 0;
let array = str.split('');
for (let i = 0; i < array.length; i++){
if (array[i] === 'a'||'e'||'i'||'o'||'u'){
count++
}
}
return array; 
}

array[i] === 'a'||'e'||'i'||'o'||'u'

这是说数组[i]==="a"OR true OR true,等等。

"e"、"i"、"o"、"u"都是真值,所以if语句永远是真的。

为了让它做你打算做的事,你应该像Gerard在评论中提到的那样做:

if (array[i] === 'a' || array[i] === 'e' || etc.) {...}

另一种简化的方法是:

if (['a', 'e', 'i', 'o', 'u'].includes(array[i])) {...}

最新更新