javascript - JavaScript 中的乘法问题
问题描述
1. let inventory = [
{ candy: "Twizzlers", inStock: 180, weeklyAverage: 200 },
{ candy: "Sour Patch Kids", inStock: 90, weeklyAverage: 100 },
{ candy: "Milk Duds", inStock: 300, weeklyAverage: 170 },
{ candy: "Now and Laters", inStock: 150, weeklyAverage: 40 }
];
// write the shouldWeOrderThisCandy function
function shouldWeOrderThisCandy(inventory){
for (i = 0; i < inventory.length; i++)
if (inventory[i].inStock < inventory[i].weeklyAverage){
for (j = 0; j < inventory[i].weelyAverage.length; j++){
return inventory[i].weeklyaverage[j] * 2;
} else {
return 0;
}
}
}
所以我在 JavaScript 中想要做的是找出我是否想订购更多的糖果。到目前为止,我将库存与每周平均值进行比较,如果库存小于每周平均值,我将订购每周平均值的 2 倍。但是,如果大于库存,那么我不会订购任何东西。到目前为止,这是我的代码。我的函数应该有 2 个参数,这里是库存和糖果。我不知道为什么它只返回零,什么时候应该让我知道要订购多少糖果。请帮助示例,当使用“Twizzlers”调用时,它应该返回 400,因为“Skittles”的每周平均值是 200,而 200 * 2 是 400,依此类推。
解决方案
有几个问题立即跳出来。
第一个是你说你用两个参数调用函数,但是你编写函数的方式它只接受一个。
我看到的第二个问题是在你的第二个for
循环中。您拼错了“weeklyAverage”。
我看到的第三个问题是我不明白为什么你还有第二个for
循环。看起来您正在尝试迭代weeklyAverage
值的每个数字,然后将其乘以 2,但您可以简单地乘以weeklyAverage
2,而不是尝试逐位进行。这也引出了第四个问题:
您在第二个for
循环中返回一个值。当您的代码到达该点时,它将立即返回那里的任何值然后停止运行,因此尽管您有一个for
希望运行多次的循环,但它只会运行第一次迭代然后返回。
因此,为了完成这项工作,您需要做一些事情:
- 更改您的函数声明,使其接受两个参数而不是一个。第一个参数可以是实际的库存对象(就像您现在设置它的方式一样),然后第二个参数可以是包含您要查看的糖果名称的字符串。
- 完成此操作后,您
for
的函数中将不再需要任何循环,因为您将不再需要手动迭代库存对象中的每个糖果。相反,您需要找到一种可用于在清单对象内搜索 candy 参数的方法。 - 在您的库存对象中找到糖果后,只需比较
inStock
和weeklyAverage
属性。如果inStock
太低,则返回weeklyAverage
乘以 2,否则返回零。
推荐阅读
- c# - Azure B2C 如何检索内置用户声明/属性
- redis - 删除 Redis 中的大量键
- python - 我如何让这个评分系统正常工作?
- google-cloud-platform - Google Place API 使用限制和计费 (2019)
- node.js - 在 Node 中还需要导入什么模块?
- javascript - 在集合中查找嵌套对象
- ruby - RoR 应用程序:(设计)任何路线后的段故障
- javascript - Highcharts点击后将新数据添加到系列
- deep-learning - 暗网:./src/parser.c:315:parse_yolo:断言“l.outputs == params.inputs”失败
- java - Maven 不会下载,因为来自 Maven Central 的 PKIX 错误