Tell us what’s happening:
Describe your issue in detail here.
the issue about the test. I’ve tried it myself, and it gives exactly the task given. is it my code that has a bug or the test has an issue?
**Your code so far**
function convertToRoman(num) {
const romanNum = [["I","V"], ["X", "L"], ["C", "D"], ["M", "V̅"]];
let str = '';
let okStr = '';
let digits = num.toString().split("").map(iNum => parseInt(iNum)).reverse();
for(i=0;i<digits.length;i++){
if (digits[i] == 5){
str += romanNum[i][1];
continue;
}
if (digits[i] == 9){
str += romanNum[i+1][0] + romanNum[i][0];
continue;
}
if (digits[i] == 4){
str += romanNum[i][1] + romanNum[i][0];
continue;
}
if (digits[i] < 4 && digits != 0){
str += romanNum[i][0].repeat(digits[i]);
continue;
}
if (digits[i] > 5){
str += romanNum[i][0].repeat(digits[i] - 5) + romanNum[i][1];
continue;
}
}
for (i=str.length -1; i >= 0; i--){
okStr += str[i];
}
return okStr;
}
**Your browser information:**
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36
While technically your code does work you have committed a very serious JS crime against humanity and thus the tests are not passing. You should always use either let or const to declare variables. Not only are you not doing this, you aren’t even using var. I’m shaking with a combination of rage and fear just thinking about this
OK, I’m being overly dramatic because I’m feeling a little silly this morning. Bottom line, always use let or const when declaring a variable, even if you are declaring those variables in for loops.
Hi, I might be wrong here since I haven’t read all the material leading up to that challenge yet. But from my little experience in MathLab I would guess that your for-loop don’t actually know what the value of “i” is when it suppose to start the loop. So I think the system is confused since the for-loop is only suppose to start when i=0, but it doesn’t have any information about the current value for “i” when the code reaches your for-loop.
I would therefore guess that adding “let i=0”, "const i=0 or “var i=0” (whatever your preference is for variable-declaration ) just before the line with the for-loop might at least help if nothing else.
Let me know how it goes.
It does know, because the value of i is set in the for loop itself:
for (i=0;
This tells the loop to star with i set to 0.
You are correct, you should always use either let or const when declaring a variable, but in this case there is no choice, you must use let because you want the value of i to change as the loop is executed.
What do you mean by ‘test it in the console yourself’? If you add the one line I said to the bottom of the code in the freeCodeCamp editor, it makes the error really apparent.
no, dude. It works now, the problem was that I didn’t declare the variable for iteration in my loop, I see that freecodecamp really tried to make this test a perfect practice. so, while my code works in other console like chrome, in this test I failed. but thanks for your help!