[英]broken code at .push in JS.
我似乎無法找到為什么不能在addDishToCourse方法中將菜式推送到Course [courseName]的原因。courseName是一個數組,因此應該沒有任何問題(盡管事實上,這不是真的> <)。 請幫忙?
const menu = {
_courses : {
_appetizers : [],
_mains : [],
_desserts : []
},
>> set appetizers(appetizerIn) {
},
get appetizers() {
},
set mains(mainIn) {
},
get mains() {
},
set desserts(dessertIn) {
},
get desserts() {
},
get courses() {
return {
appetizers : this._courses.appetizers,
mains : this._courses.mains,
desserts : this._courses.desserts
}
},
//Below is where my code breaks with the .push
addDishToCourse(courseName, dishName, dishPrice) {
let dish = {
name : dishName,
price : dishPrice
};
this._courses[courseName].push(dish);
},
getRandomDishFromCourse(courseName) {
const dishes = this._courses[courseName];
const randomIndex = Math.floor(Math.random() * this.dishes.length);
return dishes[randomIndex];
},
generateRandomMeal() {
const appetizer = this.getRandomDishFromCourse('appetizers');
const main = this.getRandomDishFromCourse('mains');
const dessert = this.getRandomDishFromCourse('desserts');
//const totalPrice = appetizers.price + mains.price + desserts.price;
return `Your appetizer is ${appetizers.name} followed by the main meal, which will be ${mains.name}, and finally you will have ${desserts.name} for dessert.`;// Your bill will be of ${totalPrice}.`;
}
};
menu.addDishToCourse('appetizers', 'Caesar Salad', 3.75);
menu.addDishToCourse('appetizers', 'Srimp Cocktail', 6.50);
menu.addDishToCourse('appetizers', 'Escargots Gratines', 4.50);
menu.addDishToCourse('mains', '16oz Ribeye', 38);
menu.addDishToCourse('mains', 'Smoked Salmon', 18);
menu.addDishToCourse('mains', 'Grilled Chicken Breast', 19);
menu.addDishToCourse('desserts', 'Chocolate Lava Cake', 3.50);
menu.addDishToCourse('desserts', 'Tiramisu', 4);
menu.addDishToCourse('desserts', 'Kiev Cake', 6.50);
let meal = menu.generateRandomMeal();
console.log(meal);
現在,我嘗試使用if語句來繞過.push,但這只是破壞了其他地方的代碼。 否則,我知道我可能會使用setter方法,但是我也不十分確定該如何處理。 我會設置addDishToCourse嗎?
我是新手(通過簡單代碼^ _ ^可以看到),所以任何幫助將不勝感激!
創建新實例時,您的courseName
需要與_courses
對象中的鍵名匹配。 在您的代碼中,所有這些名稱都帶有下划線,因此代碼會中斷。
例如:
menu.addDishToCourse('appetizers', 'Caesar Salad', 3.75);
您正在傳遞“開胃菜”作為課程名稱...
addDishToCourse(courseName, dishName, dishPrice) {
let dish = {
name : dishName,
price : dishPrice
};
this._courses[courseName].push(dish);
},
...並且您正在嘗試向_courses
添加“開胃菜”,但是_courses
僅具有_appetizers
鍵名。
我可以將對象鍵的名稱分別更改為appetizer
, mains
和dessert
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.