在javascript中将罗马数字转换为整数

在javascript中将罗马数字转换为整数,javascript,Javascript,我一直在尝试将罗马数字转换为整数,但无法找出代码中的错误。它显示此错误范围错误:无效数组长度。有人能帮我吗。提前谢谢 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

我一直在尝试将罗马数字转换为整数,但无法找出代码中的错误。它显示此错误范围错误:无效数组长度。有人能帮我吗。提前谢谢

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);
函数转换器(num){
变量arr={'1':'I','5':'V','10':'X','50':'L','100':'C','500':'D','1000':“M”};
var结果=”;
var-mult=1;
而(数值%10!==0){
var n=num%10;
var h=n*mult;
if(n<4){
//console.log(“eroor1-”);
结果=数组(n+1).join(arr[h.toString()])+结果;
}
else如果(n==4){
//console.log(“eroor2-”);
结果=arr[(h-mult).toString()]+arr[h.toString()]+结果;
}
else如果(n==5){
//console.log(“eroor3-”);
结果=arr[h.toString()]+结果;
}
else if(n<9){
//console.log(“eroor4-”);
结果=数组(n-4).join(arr[mult.toString()])+结果;
//console.log(“eroor4.1-”);
结果=arr[h.toString()]+结果;
}
else如果(n==9){
//console.log(“eroor5-”);
结果=arr[(h+mult).toString()]+arr[h.toString()]+结果;
}
否则{
结果=arr[h.toString()]+结果;
}
mult*=10;
num=num/10;
}
返回结果;
}
兑换阿曼(36);

您的变量
arr
是一个对象而不是数组。为了对代码进行下一步故障排除,您应该将其更改为数组或将其用作对象