Actualmente estoy estudiando Estructura de datos y algoritmos en LeetCode. Traté de resolver por mí mismo 'romano a número entero'. Intenté crear un objeto y acceder a la clave y al valor de la clave usando for...in. Entonces, quiero verificar mi clave y el valor de la clave usando console.log pero no mostró nada. ¿Podrías comprobar qué parte me falta? Lo siento si hago una pregunta tonta. Traté de resolver esto por mí mismo, pero no pude encontrar dónde cometí el error durante algunas horas... ¡Avísame si hay otro error!
Aquí está el código de lo que hice hasta ahora
function romanToNum(s) { const roman = { I :1, IV:4, V :5, IV:9, X :10, // IL: 49, L :50, // IC:99, C :100, // ID:499, D :500, // IM:999, M :1000 }; let answer = ''; for(let key in roman){ console.log(key); console.log(roman[key]); while (s >= roman[key]) { answer += key; s -= roman[key]; } } }
No ve nada porque el objeto no se conoce cuando está en el bloque de bucle for. Para inicializar el objeto y verlo fuera del alcance local de la función romanToNum
, lo que puede hacer es lo siguiente.
Puede inicializar el objeto globalmente, sin incluirlo en el ámbito local de la función; básicamente deshacerse de romanToNum ya que no hace nada de todos modos.
Devuelva el objeto de la función y captúrelo en una var global.
function getObject() { return roman = { I :1, IV:4, V :5, IV:9, X :10, // IL: 49, L :50, // IC:99, C :100, // ID:499, D :500, // IM:999, M :1000 }; let roman = getObject();
No estoy seguro de por qué elige hacerlo de esta manera, pero en mi opinión, no parece ser el más preferido.