[英]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.