首页 > 解决方案 > 检查是元音还是辅音

问题描述

我只想在纯js中发展我的思维逻辑。问题是,当我在控制台中使用帮助 node.js 运行脚本时,它会显示每次迭代。元音和辅音。但我只需要在控制台中写一次。也许,我应该在整个元音列表之后将结果保存在一个单独的变量中?但我不知道怎么做,下面是代码:

// problem who i can't do
function letter(arg) {
    var vowel = "aeouiAEOUI";
    var result = "";
    for(var i = 0; i < vowel.length; i++) {
        if(arg === vowel[i]) {
            console.log("vowel");
        } else {
            console.log("consonant");
        }
    }
}

我在Stack Overflow上找到了已解决的任务。但我不明白为什么?参数 >= 0 ?

function letter_indexof(arg) {
    var vowels = ["a","e","i","o","u"]; 
    if(vowels.indexOf(arg.toLowerCase()) >= 0) {
        console.log("vowel");
    } else {
        console.log("consonant");
    }   
}

我将感谢所有人的帮助。

标签: javascript

解决方案


要调整当前代码,您可以使用一个变量来指示字符是否为辅音,并以 开头true,如果找到元音,则将其重新分配给false,然后检查该变量:

function letter(arg) {
  var vowel = "aeouiAEOUI";
  var result = "";
  let isConsonant = true;
  for (var i = 0; i < vowel.length; i++) {
    if (arg === vowel[i]) {
      isConsonant = false;
    }
  }
  if (isConsonant) {
    console.log("consonant");
  } else {
    console.log("vowel");
  }
}

letter('a');
letter('f');

您还可以return在找到元音时立即记录和:

function letter(arg) {
  var vowel = "aeouiAEOUI";
  var result = "";
  for (var i = 0; i < vowel.length; i++) {
    if (arg === vowel[i]) {
      console.log("vowel");
      return;
    }
  }
  console.log("consonant");
}

letter('a');
letter('f');

但是,使用正则表达式会更容易:

const letter = arg => console.log(
  /[aeiou]/i.test(arg) ? 'vowel' : 'consonant'
);

letter('a');
letter('f');


推荐阅读