Created
February 25, 2022 17:55
-
-
Save jalcoding8/02a4db162e4b6e74256e29bf09a2fe82 to your computer and use it in GitHub Desktop.
Meal Planner Project - (Javascript Objects, with properties and methods)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Task 1-13 and my own task 14 | |
const menu = { | |
_courses: { | |
appetizers:[], | |
mains:[], | |
desserts:[], | |
}, | |
get appetizers() { | |
return this._courses.appetizers; | |
}, | |
set appetizers(appetizers) { | |
this._courses.appetizers = appetizers; | |
}, | |
get mains(){ | |
return this._courses.mains; | |
}, | |
set mains(mains) { | |
this._courses.mains = mains; | |
}, | |
get desserts() { | |
return this._courses.desserts; | |
}, | |
set desserts(desserts) { | |
this._courses.desserts = desserts; | |
}, | |
get courses() { | |
return { | |
appetizers: this.appetizers, | |
mains: this.mains, | |
desserts: this.desserts | |
} | |
}, | |
addDishToCourse(courseName, dishName, dishPrice) { | |
const dish = { | |
name: dishName, | |
price: dishPrice, | |
}; | |
return this._courses[courseName].push(dish); | |
}, | |
getRandomDishFromCourse(courseName) { | |
const dishes = this._courses[courseName] | |
const randomIndex = Math.floor(Math.random() * dishes.length); | |
return dishes[randomIndex]; | |
}, | |
generateRandomMeal() { | |
const appetizers = this.getRandomDishFromCourse('appetizers'); | |
const mains = this.getRandomDishFromCourse('mains'); | |
const desserts = this.getRandomDishFromCourse('desserts'); | |
const totalPrice = appetizers.price + mains.price + desserts.price; | |
return `Your meal includes ${appetizers.name}, entree of ${mains.name} and for dessert, ${desserts.name}, the tab is $${totalPrice}.00.`; | |
}, | |
generateMealForTwo() { | |
const appetizersOne = this.getRandomDishFromCourse('appetizers'); | |
const mainsOne = this.getRandomDishFromCourse('mains'); | |
const dessertsOne = this.getRandomDishFromCourse('desserts'); | |
const appetizersTwo = this.getRandomDishFromCourse('appetizers'); | |
const mainsTwo = this.getRandomDishFromCourse('mains'); | |
const dessertsTwo = this.getRandomDishFromCourse('desserts'); | |
const firstMealTotal = appetizersOne.price + mainsOne.price + dessertsOne.price; | |
const secondMealTotal = appetizersTwo.price + mainsTwo.price + dessertsTwo.price; | |
const mealTotal = firstMealTotal + secondMealTotal | |
return `Your meals for two include ${appetizersOne.name}, with an entree of ${mainsOne.name}, and for dessert ${dessertsOne.name}, then ${appetizersTwo.name}, with an entree of ${mainsTwo.name}, and for dessert ${dessertsTwo.name}. And the tab is $${mealTotal}.` | |
}, | |
}; | |
menu.addDishToCourse('appetizers', 'crab rangoon', 11.00); | |
menu.addDishToCourse('appetizers', 'cauliflower puffs', 8.00); | |
menu.addDishToCourse('appetizers', 'loaded nachos', 9.00); | |
menu.addDishToCourse('mains', 'filet mignon', 38.00); | |
menu.addDishToCourse('mains', 'pasta cabonara', 18.00); | |
menu.addDishToCourse('mains', 'chicken encroute', 25.00); | |
menu.addDishToCourse('desserts', 'baked alaska', 28.00); | |
menu.addDishToCourse('desserts', 'chocolate souffle', 22.00); | |
menu.addDishToCourse('desserts', 'white chocolate mousse', 15.00); | |
//console.log(menu.courses); | |
const meal = menu.generateRandomMeal(); | |
console.log(meal); | |
console.log(); | |
//I added this method to generate a meal for two with the tab total | |
const mealForTwo = menu.generateMealForTwo(); | |
console.log(mealForTwo); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment