我一直在尝试将罗马数字转换为整数,但却无法找出代码中的错误。它显示此错误 RangeError:无效的数组长度。任何人都可以帮助我。提前谢谢。
function convertToRoman(num) {
var arr = {'1':'I','5':"V",'10':"X",'50':"L",'100':"C",'500':"D",'1000':"M"} ;
var result = "";
var mult = 1;
while ( num % 10 !== 0) {
var n = num % 10 ;
var h = n*mult;
if( n < 4 ) {
//console.log("eroor1-");
result = Array(n+1).join(arr[h.toString()]) + result;
}
else if (n == 4) {
//console.log("eroor2-");
result = arr[(h-mult).toString()] + arr[h.toString()] + result;
}
else if(n == 5) {
//console.log("eroor3-");
result = arr[h.toString()] + result;
}
else if( n < 9 ) {
//console.log("eroor4-");
result = Array(n-4).join(arr[mult.toString()]) + result;
//console.log("eroor4.1-");
result = arr[h.toString()] + result;
}
else if(n == 9) {
// console.log("eroor5-");
result = arr[(h+mult).toString()] + arr[h.toString()] + result;
}
else {
result = arr[h.toString()] + result;
}
mult *= 10;
num = num / 10;
}
return result;
}
convertToRoman(36);
答案 0 :(得分:0)
您的变量arr
是一个对象,而不是一个数组。为了对代码进行故障排除,您应该将其更改为数组或将其用作对象