整数转罗马数字

将整数转换为罗马数字表示形式。 接受范围在13999之间的值(包括边界值)。

  • 创建一个包含2个值数组(罗马值,整数)的查找表。
  • 使用Array.prototype.reduce()循环遍历lookup中的值,并重复地将num除以该值。
  • 使用String.prototype.repeat()将罗马数字表示形式添加到累加器中。
const toRomanNumeral = num => {
  const lookup = [
    ['M', 1000],
    ['CM', 900],
    ['D', 500],
    ['CD', 400],
    ['C', 100],
    ['XC', 90],
    ['L', 50],
    ['XL', 40],
    ['X', 10],
    ['IX', 9],
    ['V', 5],
    ['IV', 4],
    ['I', 1],
  ];
  return lookup.reduce((acc, [k, v]) => {
    acc += k.repeat(Math.floor(num / v));
    num = num % v;
    return acc;
  }, '');
};

toRomanNumeral(3); // 'III'
toRomanNumeral(11); // 'XI'
toRomanNumeral(1998); // 'MCMXCVIII'