整数转罗马数字
将整数转换为罗马数字表示形式。
接受范围在1
到3999
之间的值(包括边界值)。
- 创建一个包含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'