var romanArray = []; var toRoman = { analyze: function(number){ romanArray = []; if (number >= 1000) { return this.thousands(number); }else if (number >= 100){ return this.hundreds(number); }else if (number >= 10) { return this.tens(number); }else{ return this.last_number(number); } }, base_function: function (number, four, nine, five, one){ if (number === 4){ romanArray.push(four); }else if(number === 9){ romanArray.push(nine); }else if(number >= 5 && number < 9){ romanArray.push(five); var remainder = number % 5; for(var i = 0; i < remainder; i++) { romanArray.push(one); } }else if (number > 0 && number < 4){ for(var e = 0; e < number; e++) { romanArray.push(one); } }else{ } return romanArray; }, thousands: function(number){ var remainder = number % 1000; var thousands = Math.floor(number / 1000); for(var e = 0; e < thousands; e++) { romanArray.push('M'); } return this.hundreds(remainder); }, hundreds: function(number) { this.base_function(Math.floor(number / 100), 'CD', 'CM', 'D', 'C'); return this.tens(number % 100); }, tens: function(number){ this.base_function(Math.floor(number/10), 'XL', 'XC', 'L', 'X'); return this.last_number(number % 10); }, last_number: function (number){ this.base_function(number, 'IV', 'IX', 'V', 'I'); return romanArray.join(''); } }; console.log(toRoman.analyze(8)); console.log(toRoman.analyze(299)); console.log(toRoman.analyze(2361));