gpt4 book ai didi

javascript - JavaScript中的自动贩卖机功能

转载 作者:行者123 更新时间:2023-12-04 02:26:51 26 4
gpt4 key购买 nike

我对Java语言非常陌生:我已经很随意地使用它了几个星期。这是我的第一篇文章,因此,如果我不够彻底,我深表歉意,但我认为自己一直在下面!

我想创建一个函数VendingMachine(零食,现金),该函数具有一个包含4个项目的列表,它们的价格带有2个参数,即“零食名称”(零食)和“已插入现金”(现金)。我试图使列表成为一个对象和一个数组,并且该数组只有半成功,但是我相信该对象确实是我想要走的路,因为...

当将带有嵌套数组的数组用于小吃列表时,唯一的问题是,如果for()循环在任何数组中都找不到“snack”值,它将打印“undefined”,而不是“Sorry,再试一次” 。”

使用对象中机器中的项目列表,我要检查该关键字的“小吃==== object.KEY”和“现金> = VALUE”。我的问题是我不太了解有关对象的语法,并且我看到其他人发布的解释和答案现在太抽象了以至于我无法理解,或者是更复杂的循环/问题,而且看起来并不真正适用于我的情况。除此以外的所有东西(我也不知道/不起作用):

 for(var key in objects) {
var value = objects[key];
}

// Using an array

function vendingMachine(snack, cash) {
//declare nested arrays of snacks & costs
var snacks = [
["Espresso", 1],
["Cappuccino", 2.50],
["Chocolate bar", 2],
["Potato Chips", 3.50]
]
//iterate through array to match snack and check funds
for (var i = 0; i < snacks.length; i++) {
if (snack === snacks[i][0] && cash >= snacks[i][1]) {
if (snack === "Potato Chips") {
console.log("Your " + snack + " have been served");
} else {
console.log("Your " + snack + " has been served");
}
}
else if (snack === snacks[i][0] && cash <= snacks[i][1]) {
console.log("Insufficient funds. Please insert more cash.");
}
}
}


// Using an object (incomplete or perhaps just VERY incorrect, I'm aware, hence why I'm here to understand why!)

function vendingMachine(snack, cash) {
//declare nested arrays of snacks & costs
var snacks = {
"Espresso": 1,
"Cappuccino": 2.50,
"Chocolate bar": 2,
"Potato Chips": 3.50
}

if (snack === snacks.hasOwnProperty() && cash >= snacks.key) {
if (snack === "Potato Chips") {
console.log("Your " + snack + " have been served");
} else {
console.log("Your " + snack + " has been served");
}
}
else if (snack === snacks.hasOwnProperty() && cash <= snacks.key) {
console.log("Insufficient funds. Please insert more cash.");
}
else if (snack != snacks.hasOwnProperty()) {
console.log(snack + " does not exist. Please try again.") //returns undefined
}
}

最佳答案

使用一些现代的javascript,我更新了您的自动售货机,并使其返回了更改。

function vendingMachine(snack, cash) {
const snacks = [
{ name: 'Espresso', price: 1 },
{ name: 'Cappuccino', price: 2.50 },
{ name: 'Chocolate', price: 2 },
{ name: 'Potato', price: 3.50 }
];

const selected_snack = snacks.find(item => item.name === snack);

if (selected_snack) {
if (selected_snack.price === cash) {
return `Your ${snack} have been served`;
}
else {
if (selected_snack.price > cash) {
return `Insufficient funds. Please insert more cash.`;
}
else {
return `Your ${snack} have been served. Here is your $${cash - selected_snack.price} change.`;
}
}
}

else {
return `${snack} does not exist. Please try again`
}
};

console.log(vendingMachine('Espresso', 12));

首先,我们将零食转换为对象数组,每个对象都有一个 nameprice键。

接下来,我们使用 Array.find()方法在小吃列表中搜索其名称所涉及的小吃。该函数将返回一个对象,如果您希望多个结果与某个条件匹配,请使用 Array.filter()代替。

因此,如果我们有一个匹配项,我们可以说 if (selected_snack)评估为 true,否则,如果没有匹配项,那么 selected_snack就是 undefined,因此基本上来说是一种不太冗长的方式来表达 if (selected_snack !== undefined)

该函数的其余部分几乎是不言自明的,我所做的唯一更改是,我不是在函数内部进行控制台日志记录,而是使用return语句。

另外,如果您想知道那些看起来很奇怪的$ {}是什么,请查看 Template Literals,它非常易于使用和方便,因此您不必编写丑陋的代码,例如 "Your " + snack + " have been served"

如果您有任何疑问,请告诉我,希望对您有所帮助。

关于javascript - JavaScript中的自动贩卖机功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59627095/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com