Javascript 字符串在元音和辅音之间交替 我应该创建一个函数,该函数接受字符串作为参数,并验证元音和辅音在整个过程中是否处于交替顺序。它应该相应地返回true或false 我在下面试过了,但结果是真的,没有检查其他的真与假的可能性。我错过了什么/做错了什么?我不想只是答案,我也希望能解释一下这个函数中发生了什么,以便正确设置它 函数isAlt(str){ 让元音=[“a”,“e”,“o”,“i”,“u”]; 对于(i=0;i=0){ if(元音.indexOf(str[i+1])=-1); 返回true; }else if(元音.indexOf(str[i])=-1){ if(元音索引of(str[i+1])>=0) 返回true; }else if(元音.indexOf(str[i])>=0){ if(元音索引of(str[i+1])>=0; 返回false; }else if(元音.indexOf(str[i])=-1){ if(元音.indexOf(str[i+1])=-1); 返回false; } } } isAlt(‘苹果’);//苹果是假的,亚马逊是真的。 函数isAlt(str){ 让元音=[“a”,“e”,“o”,“i”,“u”]; 对于(i=0;i=0&&vouels.indexOf(str[i+1])>=0) 返回false; else if(元音.indexOf(str[i])==-1&&元音.indexOf(str[i+1])==-1) 返回false; } 返回true; }

Javascript 字符串在元音和辅音之间交替 我应该创建一个函数,该函数接受字符串作为参数,并验证元音和辅音在整个过程中是否处于交替顺序。它应该相应地返回true或false 我在下面试过了,但结果是真的,没有检查其他的真与假的可能性。我错过了什么/做错了什么?我不想只是答案,我也希望能解释一下这个函数中发生了什么,以便正确设置它 函数isAlt(str){ 让元音=[“a”,“e”,“o”,“i”,“u”]; 对于(i=0;i=0){ if(元音.indexOf(str[i+1])=-1); 返回true; }else if(元音.indexOf(str[i])=-1){ if(元音索引of(str[i+1])>=0) 返回true; }else if(元音.indexOf(str[i])>=0){ if(元音索引of(str[i+1])>=0; 返回false; }else if(元音.indexOf(str[i])=-1){ if(元音.indexOf(str[i+1])=-1); 返回false; } } } isAlt(‘苹果’);//苹果是假的,亚马逊是真的。 函数isAlt(str){ 让元音=[“a”,“e”,“o”,“i”,“u”]; 对于(i=0;i=0&&vouels.indexOf(str[i+1])>=0) 返回false; else if(元音.indexOf(str[i])==-1&&元音.indexOf(str[i+1])==-1) 返回false; } 返回true; },javascript,string,if-statement,boolean,Javascript,String,If Statement,Boolean,您可以检查必须返回false的条件,例如两个连续元音或两个连续辅音。您还可以在数组中添加大写元音。一旦找到一对交替出现的元音,您将返回true,即使字符串中稍后可能有非alernating对。虽然找到非交替对时可以立即返回,但在返回true之前,必须遍历整个字符串 您还应该将for循环限制为i=0){ 函数返回true,程序结束 现在,让我们举一个“school”开头没有元音的例子: “s”不满足查找元音的第一个if语句,并转到第一个else 's'满足查找辅音的第一个else语句:else

您可以检查必须返回false的条件,例如两个连续元音或两个连续辅音。您还可以在数组中添加大写元音。

一旦找到一对交替出现的元音,您将返回
true
,即使字符串中稍后可能有非alernating对。虽然找到非交替对时可以立即返回,但在返回
true
之前,必须遍历整个字符串

您还应该将
for
循环限制为
i
,以便
str[i+1]
在字符串中

函数isAlt(str){
函数是元音(c){
让元音=[“a”,“e”,“o”,“i”,“u”];
返回元音。包括(c);
}
对于(i=0;iconsole.log(isAlt('amazon'))如果
语句格式不正确,则返回第一个内部
if(元音.indexOf(str[i+1])=-1)

在这里,您将在条件之后结束
if
语句。 这意味着如果满足外部
if
语句,程序将返回“true”并结束

对内部
if
语句也使用适当的语法

if (condition){
  // do something
}
我猜你的意思是:

if(vowels.indexOf(str[i]) >= 0) {
  if(vowels.indexOf(str[i+1]) === -1){
    return true;
  }
} else if...
如果这就是您的意思,那么函数没有通过第一个If和else语句。当它满足时,它要么返回true,要么for循环继续。当它继续运行时,它会遇到一种情况,即true条件匹配,并且返回“true”

首先,让我们以“苹果”为例:

  • “a”满足第一个if条件:
    if(元音.indexOf(str[i])>=0){
  • str[i+1]
    满足了寻找辅音的内部if条件,因为“p”是辅音
  • 函数返回
    true
    ,程序结束
  • 我们甚至不运行其他
    else if
    语句
让我们再举一个“西红柿”的例子:

  • “t”不满足第一个
    if
    语句,并转到第一个
    else
  • “t”满足第一个查找辅音的
    else
    语句:
    else if(元音.indexOf(str[i])==-1{
  • str[i+1]
    -'o'满足查找元音的内部
    if
    循环:
    if(元音.indexOf(str[i+1])>=0){
  • 函数返回
    true
    ,程序结束
现在,让我们举一个“school”开头没有元音的例子:

  • “s”不满足查找元音的第一个
    if
    语句,并转到第一个
    else
  • 's'满足查找辅音的第一个
    else语句:
    else if(vouels.indexOf(str[i])===-1{
    并转到查找元音的内部
    if`语句
  • 但是下一个字母“c”不满足在查找元音的
    if
    循环中:
    if(vouels.indexOf(str[i+1])>=0{
  • 下一个
    else
    语句不会被读取,因为您满足了第一个
    else
    语句
循环继续,i递增1
  • str[i]
    现在是'c',并且不满足查找元音的第一个
    if
  • 但它确实再次满足了下面的
    else
    语句,寻找辅音,程序将转到内部
    if语句,该语句正在寻找下一个字母是元音
  • 下一个字母是“h”,不满足内部循环,因此什么也不会发生,“for”循环继续。
    i
    再次递增1
  • str[i]
    现在是“h”,与以前一样,它将传递第一个
    if
    语句,并匹配第一个查找辅音的
    else
    语句
  • 但在这里,它将通过寻找元音的内部循环,因为下一个字母是“o”
  • 函数将按规定返回true,程序将结束
  • 所以你看,不管你在函数中输入什么词,它都会返回“true”


    要解决此问题:我建议您重新考虑程序的逻辑。

    如果第一次检查为真,则退出。如果交替条件失败,则返回false。如果结束,则返回o
    if(vowels.indexOf(str[i]) >= 0) {
      if(vowels.indexOf(str[i+1]) === -1){
        return true;
      }
    } else if...