.indexOf()不使用特定的元音

时间:2016-05-15 14:00:18

标签: javascript algorithm

所以我正在制作一个将输入转换为Pig Latin的算法。这是我到目前为止所做的:

function translatePigLatin(str) {
    var consonantCluster = [];
    var vowels = ['a', 'e', 'i', 'o', 'u'];
    var stringArray = str.split('');

    if (vowels.indexOf(stringArray[0]) === 0) {
        stringArray.push('w', 'a', 'y');
        stringArray = stringArray.join('');
        console.log(stringArray);
        return stringArray;
    }

    for (var i = 0; i < stringArray.length; i++) {
        if (vowels.indexOf(stringArray[i]) == -1) {
            consonantCluster.push(stringArray[i]);
            stringArray.push(stringArray[i]);
        } else {
            stringArray.push('a', 'y');
            stringArray.splice(0, consonantCluster.length);
            stringArray = stringArray.join('');
            console.log(stringArray);
            return stringArray;
        }
    }

    return str;
}
translatePigLatin("eight");

它在很大程度上起作用。但是,当我将一个单词交给一个元音函数时,如果它不是以字母A开头则不起作用。相反,它返回ay而不是它应该返回的单词元音way。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

你写第6行的方式只是检查stringArray的第一个字母是否等于元音数组的第一个字母(index = 0)。

如果您将(vowels.indexOf(stringArray[0]) === 0)更改为if (vowels.indexOf(stringArray[0]) !== -1) {,您将检查stringArray中的第一个字母是否与元音数组中的任何值匹配。

答案 1 :(得分:0)

W3 Schools answers your question

indexOf()方法返回字符串中第一次出现指定值的位置。

如果要搜索的值永远不会发生,则此方法返回-1。

注意:indexOf()方法区分大小写。

返回值:一个数字,表示第一次发生指定搜索值的位置,如果从未发生,则返回-1 **