Другое решение, основанное на 2 циклах. Разделение слов в азбуке Морзе осуществляется с помощью split(" ") - (с 3 знаками разделения) - который разбивает азбуку Морзе на слова, когда он распознает 3 знака разделения. Теперь у вас есть массив x строк. Чтобы получить доступ к каждому элементу (букве) в азбуке Морзе, вы должны сделать еще одно разделение, зациклившись на массиве строк (вы можете использовать «карту»), но теперь с разделением («») - (с 1 разделением знаки). теперь у вас есть массив, содержащий вложенные массивы, каждый из которых представляет слово (конечно, в коде Морзе). Чтобы перебрать словарь азбуки Морзе (объект), вы можете преобразовать его в массив с помощью Object.keys и т. д., а затем найти конкретную букву (в Морзе) в преобразованном массиве (искать конкретный ключ).
пример азбуки Морзе:
decodeMorse('.... . -.-- .--- ..- -.. .');
//should return:"HEY JUDE"
функция:
decodeMorse = function(morseCode){
var ind=0;
var answer = [];
const TOT_MORSE_CODE = {
".-": "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", ".----
":"1", "..---":"2", "...--":"3", "....-":"4", ".....":"5",
"-....":"6", "--...":"7", "---..":"8", "----.":"9", "-----
":"0", "|":" "
};
const moerse_keys = Object.keys(TOT_MORSE_CODE);/*converting
the object into an array*/
const moerse_values = Object.values(TOT_MORSE_CODE);
var words_in_morse = morseCode.split (' ');
/*sperating the morse code by words*/
var letters_in_morse =
words_in_morse.map(word => word.split(' '));
/*sperating the morse code by letters for each word*/
for (i=0 ; i<letters_in_morse.length ; i++) {
for (j=0 ; j<letters_in_morse[i].length ; j++) {
if ( moerse_keys.includes(letters_in_morse[i][j]) ) {
ind = moerse_keys.indexOf( letters_in_morse[i][j] );
answer.push(moerse_values[ind]);
}
if (j===letters_in_morse[i].length-1 ) { /*for seperate
words by ' '*/
answer.push(' ');
}
}
}
answer.pop(); /*to remove the last ' ' (avoiding getting
"HEY JUDE ")*/
return answer.join('').toUpperCase();
}
person
Nathan Barel
schedule
24.05.2020
i
это число. Он никогда не будет равен этой строке. - person Carcigenicate   schedule 01.05.2017morseCode.split(" ")
будет мешать любому тройному пробелу в строке. Попробуйте сначала разделить на три пробела. - person Joseph Marikle   schedule 01.05.2017