对于这个项目,我正在尝试解码给定的摩尔斯电码字符串。编码字符用单个空格分隔,单词用三个空格分隔。我很难过字空间。我不断收到“ wordundefinedword”。
decodeMorse = function(morseCode) {
outPut = "";
for (var i = 0; i < morseCode.split(" ").length; i++) {
if (i === " ") {
outPut += " ";
} else {
outPut += MORSE_CODE[morseCode.split(" ")[i]];
}
}
return outPut;
}
示例:“”....。 -.--“” --.--。“”->“ HEY MAN”
对不起,奇怪的报价。没有外部空间就不会显示空间。
最佳答案
也许有两个循环嵌套。外循环将莫尔斯电码分成三个空格,内循环将单词分成一个空格。这将解析出字母,然后您可以使用摩尔斯电码字母的枚举来映射字母数字字符。
// message = Halp! Morse code is driving me nuts!
var message = ".... .- .-.. .--. -·-·-- -- --- .-. ... . -.-. --- -.. . .. ... -.. .-. .. ...- .. -. --. -- . -. ..- - ... -·-·--";
var alphabet = {
"-----":"0",
".----":"1",
"..---":"2",
"...--":"3",
"....-":"4",
".....":"5",
"-....":"6",
"--...":"7",
"---..":"8",
"----.":"9",
".-":"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",
"/":" ",
"-·-·--":"!",
"·-·-·-":".",
"--··--":","
};
var messageConverted = [];
message.split(" ").map(function (word) {
word.split(" ").map(function (letter) {
messageConverted.push(alphabet[letter]);
});
messageConverted.push(" ");
});
console.log(messageConverted.join(""));
或类似的东西。该枚举不完整(大写,标点符号),但是您知道了。