Hola, necesito ayuda. Soy bastante nuevo en la codificación. Parece que no puedo hacer que mi función funcione. Sigue volviendo indefinido. Cualquier consejo sería apreciado. Gracias
var german = ["eins","zwei","drei","vier","fünf","sechs","sieben","acht","neun","zehn","elf","zwölf","dreizehn","vierzehn","fünfzehn","sechzehn","siebzehn","achtzehn","neunzehn","zwanzig","einundzwanzig","zweiundzwanzig","dreiundzwanzig","vierundzwanzig","fünfundzwanzig","sechsundzwanzig","siebenundzwanzig","achtundzwanzig","neunundzwanzig","dreiβig"]; var french = ["un","duex","trois","quatre","cinq","six","sept","huit","neuf","dix","onze","douze","treize","quatorze","quinze","seize","dix-sept","dix-huit","dix-neuf","vingt","vingt et un","vingt-deux","vingt-trois","vingt-quatre","vingt-cinq","vingt-six","vingt-sept","vingt-huit","vingt-neuf","trente"]; var translatedNumber = translate(); var number = prompt("Please enter a number between 1-30 to be translated"); if (number > 30 || number < 1) { alert("Please enter a number between 1-30") exit() } else if(isNaN(number)){ alert("Please enter digits") exit() } var language = prompt("Translated into what language? French/German"); if (language == "german" || language == "french"){ translate(); } else{ alert("Only French or German is allowed") exit() } function translate(number,language,translatedNumber,french,german){ if(language == "german"){ var translatedNumber = german[number - 1]; } else if(language == "french"){ var translatedNumber = french[number - 1]; } return translatedNumber; } alert("The translation is " + translatedNumber);Arreglado:
(El problema fue que no configuró su función correctamente. Cambié las variables de la función de traducción a lan y num, ya que esas son las únicas dos que usa en la función. Tampoco pensé que necesitaba definir el número traducido en el superior ya que aún no lo ha usado) Espero que esto ayude: D.)
var german = ["eins","zwei","drei","vier","fünf","sechs","sieben","acht","neun","zehn","elf","zwölf","dreizehn","vierzehn","fünfzehn","sechzehn","siebzehn","achtzehn","neunzehn","zwanzig","einundzwanzig","zweiundzwanzig","dreiundzwanzig","vierundzwanzig","fünfundzwanzig","sechsundzwanzig","siebenundzwanzig","achtundzwanzig","neunundzwanzig","dreiβig"]; var french = ["un","duex","trois","quatre","cinq","six","sept","huit","neuf","dix","onze","douze","treize","quatorze","quinze","seize","dix-sept","dix-huit","dix-neuf","vingt","vingt et un","vingt-deux","vingt-trois","vingt-quatre","vingt-cinq","vingt-six","vingt-sept","vingt-huit","vingt-neuf","trente"]; var translatedNumber; var number = prompt("Please enter a number between 1-30 to be translated"); if (number > 30 || number < 1) { alert("Please enter a number between 1-30") exit() } else if(isNaN(number)){ alert("Please enter digits") exit() } var language = prompt("Translated into what language? French/German"); if (language == "german" || language == "french"){ translate(language, number); } else{ alert("Only French or German is allowed") exit() } function translate(lan, num){ if(lan == "german"){ translatedNumber = german[num - 1]; } else if(lan == "french"){ translatedNumber = french[num - 1]; } return translatedNumber; } alert("The translation is " + translatedNumber);Algunas cosas a tener en cuenta sobre su código:
exit no está definida.translatedNumber es una variable global que se modifica desde dentro de otra función. Evite tales globales.Espero que lo siguiente sea lo que estás buscando:
const german = ["eins","zwei","drei","vier","fünf","sechs","sieben","acht","neun","zehn","elf","zwölf","dreizehn","vierzehn","fünfzehn","sechzehn","siebzehn","achtzehn","neunzehn","zwanzig","einundzwanzig","zweiundzwanzig","dreiundzwanzig","vierundzwanzig","fünfundzwanzig","sechsundzwanzig","siebenundzwanzig","achtundzwanzig","neunundzwanzig","dreiβig"]; const french = ["un","duex","trois","quatre","cinq","six","sept","huit","neuf","dix","onze","douze","treize","quatorze","quinze","seize","dix-sept","dix-huit","dix-neuf","vingt","vingt et un","vingt-deux","vingt-trois","vingt-quatre","vingt-cinq","vingt-six","vingt-sept","vingt-huit","vingt-neuf","trente"]; try { const number = prompt("Please enter a number between 1-30 to be translated"); if (isNaN(number)) throw({ message: "Please enter digits"}); if (number > 30 || number < 1) throw({ message: "Please enter a number between 1-30"}); const language = prompt("Translated into what language? French/German"); if (language == "german" || language == "french"){ const translatedNumber = translate(number, language); alert("The translation is " + translatedNumber); } else throw({ message: "Only French or German is allowed"}); } catch (error) { alert(error.message); } function translate(number,language){ return language == "german" ? german[number - 1] : french[number - 1]; }