Durante el desarrollo de la actividad Bonus: reducción de condicionales me surgio una duda. ¿Es posible agregar funciones dentro de un Objeto en Javascript?.
Luego de ver la clase y las funcionalidades que nos brindan los Objetos en cuanto a la considerable reduccion de condicioneles pasando de esto:
const heroe = prompt("¿Cuál es tu héroe favorito de Marvel?");
if (heroe === "Iron Man") {
console.log("Robert Downey Jr.");
} elseif (heroe === "Captain America") {
console.log("Chris Evans");
} elseif (heroe === "Thor") {
console.log("Chris Hemsworth");
} elseif (heroe === "Hulk") {
console.log("Mark Ruffalo");
} elseif (heroe === "Black Widow") {
console.log("Scarlett Johansson");
} elseif (heroe === "Hawkeye") {
console.log("Jeremy Renner");
} elseif (heroe === "Spider-Man") {
console.log("Tom Holland");
} elseif (heroe === "Doctor Strange") {
console.log("Benedict Cumberbatch");
} elseif (heroe === "Captain Marvel") {
console.log("Brie Larson");
} else {
console.log("No conozco a ese héroe");
}
A poder crear un objeto que tenga como clave (key) el nombre del personaje y como valor (value) en nombre del actor para este ejemplo
const heroes = {
"Iron Man": "Robert Downey Jr.",
"Captain America": "Chris Evans",
"Thor": "Chris Hemsworth",
"Hulk": "Mark Ruffalo",
"Black Widow": "Scarlett Johansson",
"Hawkeye": "Jeremy Renner",
"Spider-Man": "Tom Holland",
"Doctor Strange": "Benedict Cumberbatch",
"Captain Marvel": "Brie Larson",
};const heroe = prompt("¿Cuál es tu héroe favorito de Marvel?");const sinPersonaje = "No conozco a ese héroe";const heroeEncontrado = heroes[heroe] || sinPersonaje;
console.log(heroeEncontrado);
Pense en crear una funcion que contenga la logica y un objeto, donde su Clave (key) sea la accion a realizar y su Valor (value) sea la funcion.
Recreare este ejemplo con las operaciones basicas matematicas (Sumar, Restar, Multiplicar y Dividir)
Primero cree la funcion que utiizaremos y en ella el objeto con las funciones a utilizar:
functionoperacionesMatematicas(){
const operaciones = {
"sumar": function(a, b){
return a + b;
},
"restar": function(a, b){
return a - b;
},
"multiplicar": function(a, b){
return a * b;
},
"dividir": function(a, b){
return a / b;
},
};
Luego solicite al usuario el valor para a y b
const numero1 = parseFloat(prompt("Ingresa el primer número: "));
const numero2 = parseFloat(prompt("Ingresa el segundo número: "));
const operacion = prompt("¿Qué operación deseas realizar? (sumar, restar, multiplicar, dividir): ");
const funcion = operaciones[operacion];
if (funcion) {
const resultado = funcion(numero1, numero2);
console.log(`El resultado de ${operacion} es ${resultado}`);
} else {
console.log("Operación no válida");
}
}
Juntando las dos partes el script final quedaria asi :
functionoperacionesMatematicas() {
const operaciones = {
"sumar": function(a, b) {
return a + b;
},
"restar": function(a, b) {
return a - b;
},
"multiplicar": function(a, b) {
return a * b;
},
"dividir": function(a, b) {
return a / b;
},
};
const numero1 = parseFloat(prompt("Ingresa el primer número: "));
const numero2 = parseFloat(prompt("Ingresa el segundo número: "));
const operacion = prompt("¿Qué operación deseas realizar? (sumar, restar, multiplicar, dividir): ");
const funcion = operaciones[operacion];
if (funcion) {
const resultado = funcion(numero1, numero2);
console.log(`El resultado de ${operacion} es ${resultado}`);
} else {
console.log("Operación no válida");
}
}
¡Pruebalo y Si te sirvio deja un comentario y un 💚!