Кодировать строки, вычитая один от каждого символа кода


На данный момент у меня эта функция кодирования, который просто вычитает один из каждого кода символа:

String.fromCharCode.apply(null, text.split("").map(function(v) {
    return v.charCodeAt() - 1;
}));

Е. Г. тест становится СДР.

Я знаю, что эту функцию глупо, потому что это не сильный алгоритм кодирования, но это не моя точка зрения. Проблема в том, что он медленный и вызывает переполнение стека для больших строк (~130.000 в длину).

Я пытался регулярное выражение, но это еще медленнее:

text.replace(/./g, function(v) {
    return String.fromCharCode(v.charCodeAt() - 1);
});

Я тестировал оба на см. Этот тест jsperf.

В настоящее время, я исполняющую функцию для каждого символа в обе функции. Как я могу сделать функцию, которая делает то же самое, что эти функции делают, но выполняется быстрее без переполнения стека?



Комментарии
1 ответ

Попробовать зацикливание через это с простой цикл for:

var b = '';
for (var i = 0; i < a.length; i++)
{
b += String.fromCharCode(a.charCodeAt(i) - 1)
}
return b;

5
ответ дан 30 августа 2011 в 03:08 Источник Поделиться