如何使用变量作为对象内部的索引?(Javascript)
我试图使用变量开胃菜、main和甜点作为数组的索引,但我不知道如何做到这一点。这是49号线如何使用变量作为对象内部的索引?(Javascript),javascript,arrays,object,indexing,Javascript,Arrays,Object,Indexing,我试图使用变量开胃菜、main和甜点作为数组的索引,但我不知道如何做到这一点。这是49号线 var menu = { _courses: { appetizers: [], mains: [], desserts: [] }, get appetizers() { return this._courses.appetizers; }, get mains() { return this._courses.mains; }, get dessert
var menu = {
_courses: {
appetizers: [],
mains: [],
desserts: []
},
get appetizers() {
return this._courses.appetizers;
},
get mains() {
return this._courses.mains;
},
get desserts() {
return this._courses.desserts;
},
set appetizers(appetizers) {
this.courses.desserts = desserts;
},
set mains(mains) {
this.mains = mains;
},
set desserts(desserts) {
this.desserts = desserts;
},
get courses() {
return {
appetizers,
mains,
desserts,
};
},
addDishToCourse (courseName, dishName, dishPrice) {
const dish = {
food: courseName,
name: dishName,
price: dishPrice,
};
return this._courses[courseName].push(dish);
},
getRandomDishFromCourse: function(courseName) {
var dishes = this._courses[courseName];
if (dishes !== undefined) {
var randomIndex = Math.floor(Math.random() * dishes.length);
return randomIndex;
}
},
generateRandomMeal: function() { //This is the problem.
var appetizer = this.getRandomDishFromCourse('appetizers');
var main = this.getRandomDishFromCourse('mains');
var dessert = this.getRandomDishFromCourse('dessert');
return 'Your meal is ' + appetizer + ', ' + main + ', and ' + dessert + '. The total price is $' +/* this.dish.price */ 8 + '.';
}
};
menu.addDishToCourse('appetizers', 'Bread Loaf', 4.25);
menu.addDishToCourse('appetizers', 'Caesar Salad', 3.50);
menu.addDishToCourse('appetizers', 'Small Soup', 4.50);
menu.addDishToCourse('mains', 'Steak Dinner', 20.00);
menu.addDishToCourse('mains', 'spaghetti', 16.00);
menu.addDishToCourse('mains', 'Turkey Dinner', 18.99);
menu.addDishToCourse('desserts', 'Icecream', 5.99);
menu.addDishToCourse('desserts', 'Cookies', 5.99);
menu.addDishToCourse('desserts', 'Jello', 5.99);
var meal = menu.generateRandomMeal();
console.log(meal);
我已尝试使用此代码:
this.appetizers[appetizer]
this.mains[main]
this.desserts[dessert]
但这只是返回对象,而不是索引号 您的
getRandomDishFromCourse
为传递的courseName
选择一个随机索引,但它只返回索引-它应该通过return Disks[randomIndex]返回一个dish对象代码>
归还盘子后,在generaterandomemine
中,您需要选择每个盘子的name
属性进行打印,并将所有price
s相加,得出总价:
getRandomDishFromCourse: function(courseName) {
var dishes = this._courses[courseName];
if (dishes !== undefined) {
var randomIndex = Math.floor(Math.random() * dishes.length);
return dishes[randomIndex];
}
},
generateRandomMeal: function() { //This is the problem.
var appetizer = this.getRandomDishFromCourse('appetizers');
var main = this.getRandomDishFromCourse('mains');
var dessert = this.getRandomDishFromCourse('desserts');
return 'Your meal is ' + appetizer.name + ', ' + main.name + ', and ' + dessert.name +
'. The total price is $' + (appetizer.price + main.price + dessert.price).toFixed(2)
}
var菜单={
_课程:{
开胃菜:[],
干线:[],
甜点:[]
},
买开胃菜{
把这个还给我。开胃菜;
},
获取主电源(){
把这个还给我;
},
买甜点{
把这个还给我;
},
成套开胃菜(开胃菜){
this.courses.desserts=甜点;
},
设置电源(电源){
这个.电源=电源;
},
套餐甜点(甜点){
这个。甜点=甜点;
},
获取课程(){
返回{
开胃菜,
干线,
甜点,
};
},
addDishToCourse(课程名称、课程名称、课程价格){
常数盘={
食物:courseName,
姓名:dishName,,
价格:价格,,
};
将此返回。_课程[courseName]。推送(碟子);
},
getRandomDishFromCourse:函数(courseName){
var disks=这个;
如果(盘子!==未定义){
var randomIndex=Math.floor(Math.random()*displays.length);
返回菜品[随机索引];
}
},
GeneratorDomain:function(){//这就是问题所在。
var appetizer=this.getRandomDishFromCourse(“开胃菜”);
var main=this.getRandomDishFromCourse('mains');
var甜点=这个.getRandomDishFromCourse(“甜点”);
return“您的饭菜是”+apperizer.name+”、“+main.name+”和“+summit.name”+
,总价为$+(开胃菜价格+主菜价格+甜点价格)。toFixed(2)
}
};
菜单。添加Dishtocourse(“开胃菜”、“面包条”,4.25);
菜单。加上Dishtocourse(“开胃菜”,“凯撒沙拉”,3.50);
菜单。添加菜肴(“开胃菜”、“小汤”,4.50);
菜单。添加菜肴(“主菜”,“牛排晚餐”,20.00);
菜单。加盘菜('mains','spaghetti',16.00);
菜单。添加菜肴(“主菜”,“火鸡晚餐”,18.99);
菜单。添加Dishtocourse(“甜点”、“冰淇淋”,5.99);
菜单。添加Dishtocourse(“甜点”、“饼干”,5.99);
菜单。加餐(甜点、果冻、5.99);
var-fine=menu.generaterandomfine();
控制台日志(膳食)代码>您需要使用索引来访问数组中的项。您现在使用的方法将只打印随机索引
var菜单={
_课程:{
开胃菜:[],
干线:[],
甜点:[]
},
买开胃菜{
把这个还给我。开胃菜;
},
获取主电源(){
把这个还给我;
},
买甜点{
把这个还给我;
},
成套开胃菜(开胃菜){
this.courses.desserts=甜点;
},
设置电源(电源){
这个.电源=电源;
},
套餐甜点(甜点){
这个。甜点=甜点;
},
获取课程(){
返回{
开胃菜:这个,开胃菜,
电源:这个,电源,
甜点:这个,甜点,
};
},
addDishToCourse(课程名称、课程名称、课程价格){
常数盘={
食物:courseName,
姓名:dishName,,
价格:价格,,
};
将此返回。_课程[courseName]。推送(碟子);
},
getRandomDishFromCourse:函数(courseName){
var disks=这个;
如果(盘子!==未定义){
var randomIndex=Math.floor(Math.random()*displays.length);
回归指数;
}
},
GeneratorDomain:function(){//这就是问题所在。
var apertizer=this.apertizers[this.getRandomDishFromCourse('apertizers');
var main=this.mains[this.getRandomDishFromCourse('mains');
var甜点=this.deserts[this.getRandomDishFromCourse('deserts');
return“您的餐点是”+apperizer.name+”、“+main.name+”和“+summit.name+”。总价为$'+/*this.dish.price*/8+”;
}
};
菜单。添加Dishtocourse(“开胃菜”、“面包条”,4.25);
菜单。加上Dishtocourse(“开胃菜”,“凯撒沙拉”,3.50);
菜单。添加菜肴(“开胃菜”、“小汤”,4.50);
菜单。添加菜肴(“主菜”,“牛排晚餐”,20.00);
菜单。加盘菜('mains','spaghetti',16.00);
菜单。添加菜肴(“主菜”,“火鸡晚餐”,18.99);
菜单。添加Dishtocourse(“甜点”、“冰淇淋”,5.99);
菜单。添加Dishtocourse(“甜点”、“饼干”,5.99);
菜单。加餐(甜点、果冻、5.99);
//log(JSON.stringify(menu,null,4));
console.log(menu.generaterandomemine())代码>