首页 > 解决方案 > 我的 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; 
}

标签: javascriptarraysconditional-statementsoperatorscounting

解决方案


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

这就是说 array[i] === 'a' OR true 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])) {...}

推荐阅读