繁体   English   中英

有人可以解释 Javascript 中的.indexOf() 的逻辑吗?

[英]Can somebody explain the logic of .indexOf() in Javascript?

function vowelsAndConsonants(s) {
    var vowels = ['a','e','i','o','u'];

    for(let i =0; i<s.length; i++){
        if(vowels.indexOf(s[i]) > -1 ){
            console.log(s[i]);
        }
    }

    for(let j = 0; j<s.length; j++){
      if(vowels.indexOf(s[j]) < 0){
          console.log(s[j]);
      }
    }
}

上面的代码打印出输入的元音和辅音。

我很难理解.indexOf()在这种情况下的具体工作原理。

我知道.indexOf()搜索数组并返回您要查找的元素的 position,但为什么以下条件if(vowels.indexOf(s[i]) > -1)只返回元音?

  • 据我了解,如果.indexOf()返回 -1,则表示未找到匹配项。 在这种情况下, if(vowels.indexOf(s[i]) > -1)是否意味着如果找到匹配项,我们应该执行代码,因为它大于 -1?
  • 同样,在这种情况下if(vowels.indexOf(s[j]) < 0)将意味着如果找不到匹配项,则执行 if 语句中的任何内容。

有人可以解释一下逻辑并举一个简单的例子吗? 我想我明白了逻辑,但同时我认为我没有。

indexOf function 在元音数组中搜索。

如果它找到一个值,它将返回它的索引,因此结果将大于 -1。

如果它没有找到它,结果将是-1。

但最好使用
if(vowels.indexOf(s[j]) === -1)而不是
if(vowels.indexOf(s[j]) < 0)

除非您实际上还需要知道 indexOf 结果才能对其进行处理,否则在现代 JS 中,最好使用.includes()而不是针对 -1 或 0 进行测试。

.includes()更易读

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM