我的 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'

这是说 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])) {...}