# JavaScript Algorithms and Data Structures Projects: Caesars Cipher

I am having a problem in my code where the replace method is occasionally replacing the wrong letter. I think it has something to do with how the replace method works. Anyway, I read about the ASCII solution but I’m sticking to this till I get it working. Any thoughts?

``````function rot13(str) { // LBH QVQ VG!

let replaceLetter;
let strArr =[];

let splitStr = str.split(' ');
console.log(splitStr);

splitStr.forEach(el => {
console.log(el);
for(let i = 0; i < el.length; i++){
console.log(el[i]);
//Problem HERE
replaceLetter = replaceFunc(el[i]);
console.log(replaceLetter);
el = el.replace(el[i], replaceLetter);
console.log(el);

}
strArr.push(el);

});

console.log(splitStr);
console.log(strArr)

// Create a replace function
function replaceFunc(arg) {
let alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
let letter = arg
let newAlphaArr = alphabet.substring(0, alphabet.indexOf(arg));
let newStr = alphabet.concat(newAlphaArr);
let replace = newStr.charAt(newStr.indexOf(arg) + 13)
let newLetter = letter.replace(arg, replace);
return newLetter;
}
}

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

So, your function `replaceFunc()` works. That’s the most important part.

The issue lies in your `forEach()`, which has a nested `for` loop inside of it, which uses `replace()` to modify the array `splitStr` in place.

That whole code block seems overly complex, when you can simply call `replaceFunc()` on each element in your `splitStr` array.

Right now, `splitStr` contains three elements, equivalent to the space-separated strings passed into your function `rot13()`. What if, instead of three elements, you made `splitStr` an array of each character, including spaces?

That way, using something like `forEach()`, you can loop through `splitStr`, and call `replaceFunc()` on each character, and `push()` each return value to `strArr`. You will need a conditional to deal with spaces, but that’s simple enough to do within a `forEach()`.

Great idea. Thanks for your help. Over-complicating solutions is my big problem with the code I write Thanks for the feedback.