No sé si puedo preguntar o no, pero las respuestas que aparecen aquí no me ayudan. Estoy tratando de convertir números decimales a números romanos en javascript. Estoy dividiendo los números en dígitos y viendo los diferentes casos. Hasta ahora, estoy en caso de 2 dígitos. El problema es que cuando intento leer la parte de las "decenas" me dice que el número que busco no existe en el objeto, y eso no es correcto. ¿Puedes ayudarme a averiguar por qué? Cuando paso 12, solo devuelve la parte unitaria.
function convertToRoman(num) { let nums = num.toString(); let roman = ''; //here I'll keep the results let numbers = { '1': 'I', '2': 'II', '3': 'III', '4': 'IV', '5': 'V', '6': 'VI', '7': 'VII', '8': 'VIII', '9': 'IX', '10': 'X' }; let unidad = nums[1]; //here I keep the units part let decena =nums[0]*10; //here the tens part console.log("nums Length:",nums.length); //If the number has 1 digit: if (nums.length === 1){ for (let n in numbers){ if (n === nums){ roman = numbers[n]; } } } //If the number has 2 digits: if (nums.length === 2){ for ( let n in numbers){ if(n === decena){ roman += numbers[n]; } } for ( let n in numbers){ if(n === unidad){ roman += numbers[n]; } } } console.log("decena:", decena, "unidad:", unidad, "En romano:", roman); return roman } convertToRoman(12);Use este código para convertir -
function convertToRoman(num) { let map = { 1000 : "M", 900 : "CM", 500 : "D", 400 : "CD", 100 : "C", 90: "XC", 50: "L", 40: "XL", 10: "X", 9: "IX", 5: "V", 4: "IV", 1: "I" } let roman = ""; let romankeys = Object.keys(map).reverse(); romankeys.forEach((keys) => { while(keys <= num) { roman += map[keys]; num -= keys; } }); return roman; } console.log(convertToRoman(58));