作为初学者,我热衷于提高我糟糕的Javascript技能。所以我正在解决我在rmion.com找到的一些Javascript挑战。我坚持#4 (我的确意味着卡住了,在将它带到stackoverflow之前我已经尽力了)。
指令是:编写一个将文本翻译成“rövarspråket”的函数translate()。也就是说,每个辅音都加倍,并在它们之间出现“o”。例如,翻译(“这很有趣”)应该返回字符串“tothohisos isos fofunon”。
这是我到目前为止所提出的:
var vowel = 'a,e,i,o,u';
newString = '';
function vowelCheck(character) {
for (var i = 0; i < character.length; i++) {
if (character !== vowel[i]) {
return newString + ((character[i]+character[i])+'o');
} else {
return newString + (character[i]+'o');
}
}
}
vowelCheck('abc');
我需要为每个应返回的字符abc运行循环:
a,o,b,b,o,c,o
但是,因为函数返回一个字符串长度等于函数给定参数 .length 的值,所以它会停止运行循环。
vowelCheck("abc");
// returns "aao"
是否可以使用我编写的代码为 vowelCheck(“abc”)中的每个字母运行函数; ?
我没有看过rmion给出的解决方案,因为我试图看看我哪里出错了。如果用我写的东西不可能,任何提示都会很棒^^(我不是在寻找免费赠品)
答案 0 :(得分:1)
主要问题是这一行:
if (character !== vowel[i])
它并没有真正做任何事情。
你可以做的是使用数组来保存元音:
var vowels = ['a', 'e', 'i', 'o', 'u'];
然后检查字符是否在该数组中:
// if vowels does NOT contain the character...
if (vowels.indexOf(character[i]) === -1)
最后:
return newString + ((character[i]+character[i])+'o');
不会返回完整的字符串,只会返回字符串的第一部分,而且我认为它不会生成您想要的输出。
newString += ((character[i] + 'o' + character[i]));
将继续将子字符串添加到输出字符串中,然后可以在函数末尾返回。