如何针对预定义的对象属性名称使用JavaScript提示框输入值?

时间:2019-02-06 20:59:00

标签: javascript

我必须为咖啡馆创建一个账单计算器,该计算器需要一个提示框的值(该提示框还显示菜单上的各种选项,并将Object属性(价格)的值添加到账单总额中

factor("X", levels = "x")
#[1] <NA>
#Levels: x

是否可以在函数内使用if else语句来仅针对食品或饮料对象的属性名称来验证提示框中的用户输入?并将这些选择值添加到总计算器中?

例如。

//Drinks Object  
var drinks = {  
    guinness: 40,  
    kilkenny: 46,  
    stellaArtois: 28,  
    longIslandIcedTea: 35,  
    orangeJuice: 19,    
};

//Food Object  
var food = {  
    toastedSandwich: 25,  
    cheeseburger: 55,  
    pizza: 75,  
    spaghettiBolognese: 48,  
    rumpSteak: 150,  
};

我知道代码还不完整,我只是好奇如何比较对象属性名称和属性值的输入。

1 个答案:

答案 0 :(得分:0)

使用Object.getOwnPropertyNames列出选项以生成有效选项的数组的方式相同,您可以检查该数组以查看用户输入是否在其中。在这里,您可以获取与该饮料相关的价值并将其添加到您的总计中。您可以在两次调用该函数后看到,总数将被更新。

var drinks = {
  guinness: 40,
  kilkenny: 46,
  stellaArtois: 28,
  longIslandIcedTea: 35,
  orangeJuice: 19,
};

//Food Object  
var food = {
  toastedSandwich: 25,
  cheeseburger: 55,
  pizza: 75,
  spaghettiBolognese: 48,
  rumpSteak: 150,
};

var total = 0;

function displayMenu1() {
  var inputDrink = prompt("What drink would you like to order?, We have: " + Object.getOwnPropertyNames(drinks));
  if (Object.getOwnPropertyNames(drinks).includes(inputDrink)) {
    total += drinks[inputDrink];
    alert("Great Choice!  New total is " + total);
  } else {
    alert("Please choose a valid option from the menu");
  }
}

displayMenu1();
displayMenu1();