2016-10-26 1 views
0

Ich bin sehr neu in JavaScript. Momentan mache ich ein Programm, in dem ich einen Text in "rovarspracket" übersetzen möchte. d) Verdopple jeden Konsonanten und platziere dazwischen ein "o". Für ex:, translate ("das ist Spaß") sollte die Zeichenfolge "tothohisos isos fofunon" zurückgegeben werden. Ich kann das Ergebnis nicht wie gewünscht erzielen. Hilf mir, dass ich lernen würde.Wie überprüft man, ob ein Wert mit charAt in JavaScript

Dies ist mein folgender Code, den ich ausprobiert habe.

<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> 

Antwort

0

Das können Sie tun.

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>

Wenn Sie speziell eine Lösung mit charAt Funktion suchen, hier ist es.

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

Wenn ich Code-Snippet ausführen, zeigt es einen Fehler in. wie man es löst –

+0

ist es? Ich sehe den Fehler nicht beim Ausführen. Kannst du es überprüfen? – Sreekanth

+0

Ich könnte die Antwort nur durch die zweite Wahl bekommen –

1

Ich habe die Freiheit zu vereinfachen, die Funktionalität für Sie gemacht:

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

Oder ein wenig kompakter:

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

Es hat mir sehr geholfen. Können wir es mit CharAt benutzen? Wie auch immer, beide Antworten funktionieren für mich. –

+0

Diese Logik sieht nicht richtig für mich aus. anstelle von "tothohisos isos fofunon" kehrt Ihre Lösung "tothohisos o isos o fofunon" zwischen den Wörtern zurück, wo "o" von Räumen umgeben ist. – Sreekanth

+0

@Sreekanth: Ich habe die Räume vergessen. Die Lösung funktioniert jetzt. – Cerbrus

Verwandte Themen