FireworkPolymer
  1. function arabicToRoman(num) {
  2.   if (num <= 0 || num >= 4000) {
  3.     throw new Error("无法转换超出范围的数字。请输入 1 到 3999 之间的整数。");
  4.   }

  5.   const romanNumerals = {
  6.     1000: "M",
  7.     900: "CM",
  8.     500: "D",
  9.     400: "CD",
  10.     100: "C",
  11.     90: "XC",
  12.     50: "L",
  13.     40: "XL",
  14.     10: "X",
  15.     9: "IX",
  16.     5: "V",
  17.     4: "IV",
  18.     1: "I",
  19.   };

  20.   let romanStr = "";

  21.   for (let value in romanNumerals) {
  22.     while (num >= value) {
  23.       romanStr += romanNumerals[value];
  24.       num -= value;
  25.     }
  26.   }

  27.   return romanStr;
  28. }
复制代码
是的,现成代码我也不知道怎么用,磕头了

破损的鞘翅
  1. <blockquote>function arabicToRoman(num) {
复制代码
楼主提供的代码中,用了 for...in 来循环 romanNumerals 这个对象,然而因为 for...in 不关心对象的属性顺序,就会导致循环可能不会从1000开始换成数组就行了,数组是有顺序的,然后用for...of循环它
像代码中最后一行所示,调用刚刚定义的函数就行

Neige
网上扒的代码?trmenu那个js引擎是瘸腿儿的,不能用const和let