I am a beginner in javascript and I try to write a simple decoding function. Here it is:
function decode(text) {
let letter, count, i, result, letters;
result = "";
for (i = 0; i < text.length; i++) {
count = text[i];
if (typeof Number(count) === "number") {
count = Number(count);
console.log(count); // this line only for testing
letter = text[i + 1];
letters = letter.repeat(count);
result += letters;
console.log(result); // this line only for testing
} else {
result += text[i];
}
}
return result;
}
console.log(decode("v2rt3b2x"));
I need help in understanding why the if clause is not being skipped when typeof Number(count) === "number" is false. It returns this:
NaN
VM708:12
VM708:8 2
VM708:12 rr
VM708:8 NaN
VM708:12 rr
VM708:8 NaN
VM708:12 rr
VM708:8 3
VM708:12 rrbbb
VM708:8 NaN
VM708:12 rrbbb
VM708:8 2
VM708:12 rrbbbxx
VM708:8 NaN
As I said, I am a beginner, so please be mercifull...
I got the right answer, but I will try to figure out later why count - 1 works, for now I thank everybody for their help.
function decode(text) {
let letter, count, i, result, letters;
result = "";
for (i = 0; i < text.length; i++) {
count = parseInt(text[i]);
if (!isNaN(count)) {
//console.log(count); // this line only for testing
letter = text[i + 1];
letters = letter.repeat(count-1);
//console.log(letters);
result += letters;
//console.log(result); // this line only for testing
} else {
result += text[i];
}
}
return result;
}
console.log(decode("v2rt3b2xz3f2d 2s2 j"));
vrrtbbbxxzfffdd ss j