经典的元音运动。我无法弄清楚为什么我的for循环不起作用

时间:2015-11-12 15:38:14

标签: javascript html

练习题 - 编写一个将文本翻译成“rövarspråket”的函数translate()。也就是说,每个辅音都加倍,并在它们之间出现“o”。例如,翻译(“这很有趣”)应该返回字符串“tothohisos isos fofunon”。

我不明白为什么我的代码不起作用。

var word = prompt("Enter a word");

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

for (var i=0; i < word.length; i++) {
    if (word.charAt(i) != "a" || "e" || "i" || "o" || "u" ) {
        output = word.charAt(i) + "o" + word.charAt(i);    
    } else {
        output = word.charAt(i);   
    }
    document.getElementById("paragraph").innerHTML = output;
}

3 个答案:

答案 0 :(得分:2)

试试这个:

var word = prompt("Enter a word");

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

for (var i=0; i < word.length; i++) {
 if (vowels.indexOf(word.charAt(i))==-1 ) {
     output += word.charAt(i) + "o" + word.charAt(i);    
 }
    else{
     output += word.charAt(i);   
    }
    document.getElementById("paragraph").innerHTML = output;
}

请注意,我将word.charAt(i)替换为vowels.indexOf 通过使用indexOf,您可以通过返回的值来确定数组中是否存在某些内容。如果元素不存在,则返回-1,或者数组中的元素的索引

答案 1 :(得分:1)

此代码

if (word.charAt(i) != "a" || "e" || "i" || "o" || "u" ) {...}

装置

如果[(word.charAt(i) !="a")"e""a" ...]

并且&#34; e&#34;当转换为布尔值时,求值为true。

执行您尝试执行的操作的正确代码将是

if (word.charAt(i) != "a") && (word.charAt(i) != "e")  && (word.charAt(i) != "i")  && (word.charAt(i) != "o")  && (word.charAt(i) != "u") ) {...}

此外,将output =命令更改为output+=

答案 2 :(得分:1)

这可以通过正则表达式一行来实现:

nightwatch.conf.js

在你的例子中:

yourString.replace(/([bcdfghjklmnpqrstvwxz])/g, '$1o$1'); // Add the accepted characters here

输出

"this is fun".replace(/([bcdfghjklmnpqrstvwxz])/g, '$1o$1')