4

演習:文字(つまり、長さ1の文字列)を取り、母音の場合はtrueを返し、それ以外の場合はfalseを返す関数を記述します。

私のコード:

var findVowel = function(letter) {

var vowels = ["a", "e", "i", "o", "u"];

for(var i in vowels){

    if(letter === i){
        return true;
    } else {
        return false;
    }
}

};

findVowel("e");

私は高低を調べましたが、コードはあるべきように見えますが、母音が与えられているかどうかに関係なくfalseを返します。

4

6 に答える 6

7

配列で for..in ループを使用しないでください。i値ではなくインデックスです。また、コードは文字「a」のみをチェックします。最初の繰り返しの後は常に true または false を返すため、ループの次の繰り返しに進むことはありません。

return false をループの後に移動して、すべての母音に対してチェックした後でのみ false を返すようにする必要があります。

また、より「伝統的な」 for..loop スタイルに切り替える必要があります。

「y」は母音ですか?問題" :)

修正されたコードは次のとおりです。

var findVowel = function(letter) {

    var vowels = ["a", "e", "i", "o", "u"];

    for(var i = 0; i < vowels.length; i++){ // don't use for...in with Arrays
        if(letter === vowels[i]){// Use array indexing instead
            return true;
         }
    }

    return false;// This is after the loop

};

試してみてください: http://jsfiddle.net/adamzr/3yhFS/

于 2012-12-16T20:42:58.557 に答える
0

iは、のイテレータの現在のインデックスでありvowels、現在の母音ではありません。したがって、次のようになります。

if(letter === vowels[i]) ...
于 2012-12-16T20:38:57.973 に答える
0

これを使用するだけで、何もループする必要はありません。

var findVowel = function(letter) {
    return "aeiou".indexOf(letter) != -1; // return if the letter is found in "aeiou"
};

または、私の個人的なお気に入り:

var findVowel = function(letter) {
    return ~"aeiou".indexOf(letter);
};

.indexOf()パラメータが文字列内に見つからない場合はを返し-1ます。それ以外の場合は、文字列内のパラメータの位置(int from 0to string length - 1)を返します。

したがって、最初のサンプルでは、​​が.indexOf()返される場合-1、その文字は母音ではありません。他の値を返す場合はそうです。(したがって!= -1)。

これ~はビット単位のNOTであり、その出力を反転します:->falseっぽい値に
-1なります。(Xが正または0の場合)は->真っぽい値になります。0
X-(X+1)

このように、関数は、文字が母音の場合はtrue-ishを返し、そうでない場合はfalse-ishを返します。

「厳密な」ブール出力が必要な場合は、を次のように置き換えますreturn

return !!~"aeiou".indexOf(letter);

!!doubleブール値NOTです(つまり、ブール値を2回反転します)。これにより、Trueっぽい値が。にキャストされtrue、falseっぽい値(0)が。にキャストされfalseます。

于 2012-12-16T20:41:30.977 に答える
0

母音の最初の要素のみを指定された文字と比較し、その結果を返します。代わりに、配列全体を調べて、母音のいずれかが一致するかどうかを確認する必要があります。

于 2012-12-16T20:42:59.237 に答える
0

.charAtメソッドをメソッドとともに使用することもできます.toLowerCase

function vowelChecker(x) {
    // vowelChecker will grab the first letter (character)...
    var firstChar = x.toLowerCase().charAt(0);

    // Then check if that first letter is a vowel.
    if (firstChar === "a" || firstChar === "e" || firstChar === "i" || firstChar === "o" || firstChar === "u") {
        // If so... it will log true.
        console.log(true);
    } else {
        // If not... it will log false.
        console.log(false);
    }
}
于 2018-08-08T12:32:42.223 に答える