Twój zapis "rozbiłem" na "kroki" najciekawszy jest numer 7 no i w konsekwencji 8.
var encode = (str, encpsw) => {
var codes = [];
console.warn('1', str, encpsw);
for (var i = 0; i < str.length; ++i) codes.push(str.charCodeAt(i));
console.warn('2', codes);
var pswcodes = [];
for (var i = 0; i < encpsw.length; ++i) pswcodes.push(encpsw.charCodeAt(i));
console.warn('3',pswcodes);
var bsns = [];
for (var i = 0; i < str.length; ++i) if (str.charAt(i) === "\n") bsns.push(i);
console.warn('4',bsns);
var adcds = [];
for (var i = 0; i < str.length; ++i){
adcds.push(codes[i] + pswcodes[i % pswcodes.length]);
console.log('5',pswcodes[i % pswcodes.length]);
}
console.warn('6',adcds);
var j = 10,
enccds = [];
for (var i = 0; i < adcds.length; ++i) {
enccds.push(adcds + i + j);
if (bsns.includes(i)) j += 10;
}
console.warn('7',enccds);
var encoded = "";
for (var i = 0; i < enccds.length; ++i) {
encoded += String.fromCharCode(enccds[i]);
console.info('8',enccds[i]);
}
return encoded;
};
console.log(encode('Lorem','lo'));
W tym przypadku to raczej "ciężko" jest wykonać prawidłowo
String.fromCharCode(enccds[i])
gdy np.: dla i=0 mamy: enccds[i] = 184,222,222,212,217010