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

时间:2017-01-16 17:30:50

标签: javascript

我一直在尝试将罗马数字转换为整数,但却无法找出代码中的错误。它显示此错误 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);

1 个答案:

答案 0 :(得分:0)

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