2016-10-20 2 views
-1

после запуска кода я не получаю результата в окне. и я не могу найти проблему результат должен быть строкой, созданной из charCode.String.fromCharCode не дает результата javaScript

function rot13(str) { 
 
    var te = []; 
 
    var i = 0; 
 
    var a = 0; 
 
    var newte = []; 
 

 
    while (i < str.length) { 
 
    te[i] = str.charCodeAt(i); 
 
    i++; 
 
    } 
 
    while (a != te.length) { 
 
    if (te[a] < 65) { 
 
     newte[a] = te[a] + 13; 
 
    } else 
 
     newte[a] = te[a]; 
 
    a++; 
 
    } 
 

 
    var mystring = String.fromCharCode(newte); 
 

 

 
    return mystring; 
 
} 
 

 
// Change the inputs below to test 
 
rot13("SERR PBQR PNZC");

+1

Вы ничего не делаете с возвращенным значением - чего вы ожидаете? – Li357

+1

'String.fromCharCode (newte);' вероятно, не делает то, что вы ожидаете либо –

+0

не могли бы вы объяснить мне, что я пропустил? Я попробовал несколько разных сценариев, и я всегда получаю ошибку или ничего – EdenLT

ответ

0

Метод String.fromCharCode ожидает вас пройти каждый номер в качестве отдельного аргумента. В примере кода вы передаете массив как один аргумент, который не будет работать.

Попробуйте использовать apply() метод вместо, который позволит вам передать массив, и он будет конвертировать, что в несколько отдельных аргументов:

var mystring = String.fromCharCode.apply(null, newte); 
+1

'.call' не принимает массив таким образом, это' .apply'. –

+0

Ой, да нет, ты совершенно прав. Обновление ответа. –

+0

отличное объяснение Steven спасибо. – EdenLT

0

Похоже String.fromCharCode() не определена для работы с массивом.

Попробуйте так:

function rot13(str) { 
 
    var result = ""; 
 
    
 
    for (var i = 0; i < str.length; i++) { 
 
    var charCode = str.charCodeAt(i) + 1; 
 
    
 
    if (charCode < 65) { 
 
     charCode += 13; 
 
    } 
 
    
 
    result += String.fromCharCode(charCode); 
 
    } 
 
    
 
    return result; 
 
} 
 

 
// Change the inputs below to test 
 
console.log(rot13("SERR PBQR PNZC"));

ПРИМЕЧАНИЕ: Я скопировал вашу логику для замещения символов, но it doesn't seem correct.

+0

да, я обнаружил, что я не получаю результат, как я ожидал :) буду работать с ним больше. – EdenLT

Смежные вопросы