var convert = { to_morse: function (s) { var e2m = this.e2m, result = s.split('').map(function (e) { var letter = e.toUpperCase(); if (e2m.hasOwnProperty(letter)) { return e2m[letter]; } else { return e; } }).join(' '); return result; }, from_morse: function (s) { var m2e = this.m2e, result = s.split(/\s{2}/).map(function (e) { return _from_morse(e); }); return result.join(' '); function _from_morse(w) { var result = w.split(' ').map(function (e) { if (m2e.hasOwnProperty(e)) { return m2e[e]; } else { return e; } }).join(''); return result; } }, e2m: { 'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.', 'G': '--.', 'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-', 'Y': '-.--', 'Z': '--..', '0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-', '5': '.....', '6': '-....', '7': '--...', '8': '---..', '9': '----.', }, init: function () { var e2m = this.e2m, result = {}; Object.keys(e2m).forEach(function (e) { result[e2m[e]] = e; }); this.m2e = result; return this; } }.init(); var string = 'SOS PLANET EARTH', to_morse = convert.to_morse(string), from_morse = convert.from_morse(to_morse); document.getElementById('english').innerHTML = from_morse; document.getElementById('morse').innerHTML = to_morse;
<div id="english"></div> <div id="morse"></div>
div { color: #777; padding: 5% 0 0 0; } div:first-of-type { padding-top: 7%; }