首页 > 解决方案 > 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,依此类推。

标签: javascriptfunctionmultiplication

解决方案


有几个问题立即跳出来。

第一个是你说你用两个参数调用函数,但是你编写函数的方式它只接受一个。

我看到的第二个问题是在你的第二个for循环中。您拼错了“weeklyAverage”。

我看到的第三个问题是我不明白为什么你还有第二个for循环。看起来您正在尝试迭代weeklyAverage值的每个数字,然后将其乘以 2,但您可以简单地乘以weeklyAverage2,而不是尝试逐位进行。这也引出了第四个问题:

您在第二个for循环中返回一个值。当您的代码到达该点时,它将立即返回那里的任何值然后停止运行,因此尽管您有一个for希望运行多次的循环,但它只会运行第一次迭代然后返回。

因此,为了完成这项工作,您需要做一些事情:

  1. 更改您的函数声明,使其接受两个参数而不是一个。第一个参数可以是实际的库存对象(就像您现在设置它的方式一样),然后第二个参数可以是包含您要查看的糖果名称的字符串。
  2. 完成此操作后,您for的函数中将不再需要任何循环,因为您将不再需要手动迭代库存对象中的每个糖果。相反,您需要找到一种可用于在清单对象内搜索 candy 参数的方法。
  3. 在您的库存对象中找到糖果后,只需比较inStockweeklyAverage属性。如果inStock太低,则返回weeklyAverage乘以 2,否则返回零。

推荐阅读