for循环中字符串的迭代不能按预期工作

时间:2015-07-13 14:19:43

标签: javascript function if-statement for-loop

作为初学者,我热衷于提高我糟糕的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给出的解决方案,因为我试图看看我哪里出错了。如果用我写的东西不可能,任何提示都会很棒^^(我不是在寻找免费赠品)

1 个答案:

答案 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]));

将继续将子字符串添加到输出字符串中,然后可以在函数末尾返回。

Here's a working example you can reference如果你愿意的话。