1
and 3999
(both inclusive).Array.prototype.reduce()
to loop over the values in lookup
and repeatedly divide num
by the value.String.prototype.repeat()
to add the roman numeral representation to the accumulator.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'
Subscribe to get resources directly to your inbox. You won't receive any spam! ✌️