簡體   English   中英

for循環中的字符串迭代無法按預期工作

[英]Iteration of string in for loop doesn't work as expected

作為一個初學者,我渴望提高我的Java語言技巧。 因此,我要解決在rmion.com上發現的一些Javascript挑戰。 我被卡在#4上 (我的意思確實是卡住了,在將它帶到stackoverflow之前,我已經盡力了)。

指令是: 編寫一個函數translate(),它將文本轉換為“rövarspråket”。 也就是說,將每個輔音加倍,並在它們之間放置一個“ o”。 例如,translate(“ this is fun”)應該返回字符串“ 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的給定解決方案,因為我試圖查看我要去哪里。 如果我寫的東西不可能,那么任何提示都會很棒^^(我不是在尋找免費贈品)

主要問題是此行:

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

將繼續將子字符串添加到輸出字符串,然后可以在函數末尾返回。

如果需要, 這是一個工作示例,您可以參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM