Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用变量作为对象内部的索引?(Javascript)_Javascript_Arrays_Object_Indexing - Fatal编程技术网

如何使用变量作为对象内部的索引?(Javascript)

如何使用变量作为对象内部的索引?(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

我试图使用变量开胃菜、main和甜点作为数组的索引,但我不知道如何做到这一点。这是49号线

    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())