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()
搜索数组并返回您要查找的元素的位置,但是为什么以下条件if(vowels.indexOf(s[i]) > -1)
仅返回元音?
.indexOf()
返回-1,则表示不找到匹配项。在这种情况下,if(vowels.indexOf(s[i]) > -1)
表示如果找到匹配项,则应执行代码,因为它大于-1?if(vowels.indexOf(s[j]) < 0)
表示如果找不到匹配项,则执行if内的任何内容声明。有人可以解释一下逻辑并举一个简单的例子吗?我想我明白了逻辑,但同时我想我没有。
indexOf
函数在元音数组中搜索。
如果找到一个值,它将返回它的索引,因此结果将大于-1。
如果找不到它,结果将为-1。
但是最好使用if(vowels.indexOf(s[j]) === -1)
代替if(vowels.indexOf(s[j]) < 0)
除非您实际上需要知道索引才能对其执行某些操作,但在现代JS中,最好使用.includes()
而不是针对-1或0进行测试。