2016-10-26 19 views
0

JavaScriptの新機能です。現在、私はテキストを "rovarspra​​cket"に翻訳するプログラムを行っています。すなわち、すべての子音を2倍にし、間に「o」の出現を置く。例:translate( "this is fun")は "tothohisos isos fofunon"という文字列を返すべきです。私は望むように結果を得ることができません。私が学ぶことを助けてください。JavaScriptでcharAtを使用して値を確認する方法

これは私が試した私の次のコードです。

<button type="button" onclick="translate('de')">try it</button> 
    <h2 id="ad" /> 
<script> 
      function translate(t) 
       {//alert(t.length);exit; 
        var l=t.length; 
        var v=["a","e","i","o","u",""]; 
        var b=""; 
        for(var i=0;i<l;i++) 
         { //alert(i);exit; 
          var c=t.charAt[i];alert(c); 
          if(v.indexOf(c)!=-1) 
          { 
           b=(b+(c)); 
          } 
          else 
          { 
           b=(b+(c="o"+c)); 
          } 
         } 

        document.getElementById("ad").innerHTML=b; 
       } 

     </script> 

答えて

0

これはあなたができることです。

function translate(input) { 
 
    var outputString = []; 
 
    var vowels = ['a', 'e', 'i', 'o', 'u']; 
 
    input.split("").forEach(function(charValue) { 
 

 
    if (vowels.includes(charValue) || charValue == ' ') { 
 
     outputString.push(charValue); 
 
    } else { 
 
     outputString.push(charValue + 'o' + charValue); 
 
    } 
 
    }); 
 

 
    document.querySelector("#output").innerHTML = outputString.join(""); 
 
}
div { 
 
    padding: 10px; 
 
}
<button type="button" onclick="window.translate('this is fun')">try it</button> 
 
<div id="output"></div>

あなたは特別のcharAt機能を持つソリューションを探しているなら、ここにあります。

function translate(input) { 
 

 
    var outputString = [], 
 
    vowels = ['a', 'e', 'i', 'o', 'u']; 
 

 
    for (var idx = 0; idx < input.length; idx++) { 
 
    var currentChar = input.charAt(idx); 
 
    if (vowels.indexOf(currentChar) === -1 && currentChar != " ") { 
 
     outputString.push(currentChar + "o" + currentChar); 
 
    } else { 
 
     outputString.push(currentChar); 
 
    } 
 
    } 
 
    console.log(outputString.join("")); 
 
} 
 
translate("this is fun");

+0

コードスニペットを実行すると、でエラーが表示されます。それを解決する方法 –

+0

それは?私はそれを実行している間、エラーは表示されません。あなたはそれを確認することができますagian? – Sreekanth

+0

2番目の選択肢のみで回答を得ることができました –

1

私はあなたのための機能を簡素化するために自由を撮影した:

var str = "this is fun", 
 
    arr = str.split(''); // Split the string into an array of separate characters. 
 
    mapped = arr.map(function(c){ 
 
     if(["a","e","i","o","u"," "].indexOf(c) == -1) // If the character is a consonant 
 
      return c + 'o' + c; // replace it, 
 
     return c;    // otherwise, just keep the current character. 
 
    }), 
 
    result = mapped.join(''); // Rebuild the string 
 

 
console.log(result);

それとも、もう少しコンパクト:

var str = "this is fun", 
 
    result = str.split('').map(function(c){ 
 
     return (["a","e","i","o","u"," "].indexOf(c) == -1) ? (c + 'o' + c) : c; 
 
    }).join(''); 
 

 
console.log(result);

+0

それは私をたくさん助けました。私たちはCharAt ..でそれを使うことができますか?とにかく両方の答えが私のために働いています –

+0

この論理は私に見えません。 "tothohisos isos fofunon"の代わりに、あなたの解決策は "o"がスペースで囲まれた単語の間に "tothohisos o isos o fofunon"を返します。 – Sreekanth

+0

@Sreekanth:スペースについて忘れました。このソリューションは現在動作しています。 – Cerbrus

関連する問題