2

我想编写一个函数,它将一个字母作为参数,如果它是元音则返回 true,否则返回 false。

我设置了一个字母数组并使用 if 语句来获取元音,但该函数返回错误天气它是元音还是辅音?

关于在传递元音时如何让函数返回 true 的任何想法。

var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];

function max(ltr) {


for (var item = 0; item < arr.length; item++) {
    if (item == 'a' || item == 'e' || item == 'i' || item == 'o' || item == 'u') {
        return true;
    } else {
    return false;
}
}

}
4

6 回答 6

1

您的函数所做的是根据元音列表检查数字零,然后立即返回false(因为0不等于任何元音)。它甚至从不看ltr

您需要修复该功能,并将循环移到外面。

于 2013-09-02T15:20:11.227 回答
1

就像其他人说的那样,您正在将Int( item) 与字符串进行比较。

尝试这个:

if (ltr == 'a' || ltr == 'e' || ltr == 'i' || ltr == 'o' || ltr == 'u')

这样,您可以跳过整个arr,除非您也出于其他原因使用它。不过,我不知道为什么。

另一个(更简单)的实现是使用正则表达式

function isVowel(letter) {
    return /^[aeuio]$/.test(letter)
}

这将测试是否ltr与 匹配RegExp,以及是否为单个字符。

于 2013-09-02T15:31:52.020 回答
0

我认为这段代码会起作用:

var vowelsconsonants = function (vowel,consonant) {

if (vowel.length > 0 && consonant.length > 0) {
  if (vowel === 'a' || vowel === 'e'|| vowel === 'i' || vowel === 'o'  || vowel ==='u') {
        return true;
  } else {
        return false;
  }
} else {
  return false;
}
};

试试看...

于 2013-09-02T15:49:10.197 回答
0

您在第一步 item = 0; 将 character 与 int (item) 进行比较 它不是一个字符,它返回 false

于 2013-09-02T15:22:13.477 回答
0

item 是 int,你检查它就像它是字符串一样。使用 toString(N) 将其转换为另一个基数或使用 arr[item] 从 arr 获取字母。

于 2013-09-02T15:24:15.280 回答
-1

您需要使用项目的索引来返回数组中的值,即

if (arr[item] == 'a' || arr[item] == 'e' || arr[item] == 'i' || arr[item] == 'o' || arr[item] == 'u')
于 2013-09-02T15:28:38.977 回答