将整数转换为罗马数字

Beginner

This tutorial is from open-source community. Access the source code

简介

在本实验中,我们将探索如何使用 JavaScript 将整数转换为其罗马数字表示形式。我们将使用查找表将整数值映射到其相应的罗马数字,然后使用 reduce 方法遍历这些值并构建输入整数的罗马数字表示形式。在本实验结束时,你将对如何在 JavaScript 中操作数组和字符串以执行复杂任务有更深入的理解。

将整数转换为罗马数字

要将整数转换为其罗马数字表示形式,请遵循以下步骤:

  1. 打开终端/SSH 并输入 node 以开始练习编码。

  2. 函数 toRomanNumeral() 接受 13999 之间(包括两端)的值。

  3. 创建一个查找表,其中包含以(罗马数字值,整数)形式的双值数组。

  4. 使用 Array.prototype.reduce() 遍历 lookup 中的值,并反复将 num 除以该值。

  5. 使用 String.prototype.repeat() 将罗马数字表示形式添加到累加器中。

以下是 toRomanNumeral() 函数的代码:

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'

总结

恭喜你!你已经完成了“将整数转换为罗马数字”实验。你可以在 LabEx 中练习更多实验来提升你的技能。