JSFiddle - React, Tailwind, and code Playground

by Jayson Buquia

JavaScript

function solution(number){
  const numeralMap = {
    1: ['I', 'X', 'C', 'M'],
    4: ['IV', 'XL', 'CD'],
    5: ['V', 'L', 'D'],
    9: ['IX', 'XC', 'CM'],
  };
  
  return String(number).split('').reverse().map((digit, index) => {
  	const numeral = Number(digit);
    
    if ( numeral === 9 ) {
    	return numeralMap[9][index];
		}
    else if ( numeral >= 5 ) {
    	let tens = numeral - 5;
      return numeralMap[5][index] + numeralMap[1][index].repeat(tens);
		}
    else if ( numeral === 4 ) {
    	return numeralMap[4][index];
		}
    else {
    	return numeralMap[1][index].repeat(numeral);
		}
  }).reverse().join('');
};

console.log(solution(1), 1, 'I');
console.log(solution(2), 2, 'II');
console.log(solution(3), 3, 'III');
console.log(solution(4), 4, 'IV');
console.log(solution(5), 5, 'V');
console.log(solution(9), 9, 'IX');
console.log(solution(10), 10, 'X');
console.log(solution(11), 11, 'XI');
console.log(solution(19), 19, 'XIX');
console.log(solution(22), 22, 'XXII');
console.log(solution(15), 15, 'XV');