乘以 JavaScript 的麻烦

trouble multiplying in 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 个参数,这里是 inventory 和 candy。我不明白为什么它 return 只返回零,而它应该让我知道要订购多少糖果。请帮助示例,当使用“Twizzlers”调用时,它应该 return 400,因为“Skittles”的每周平均值为 200,而 200 * 2 为 400,依此类推。

  1. 您需要接受项目名称作为第二个参数。
  2. 您可以使用 Array#find 查找具有指定名称的库存项目。

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 }
];
function shouldWeOrderThisCandy(inventory, candy){
  const obj = inventory.find(x=>x.candy===candy);
  if(obj?.inStock < obj?.weeklyAverage) return obj.weeklyAverage * 2;
  else return 0;
}
console.log(shouldWeOrderThisCandy(inventory, "Twizzlers"));

有几个问题让我立刻跳出来。

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

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

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

您正在 return 在第二个 for 循环中输入一个值。当你的代码到达那个点时,它会立即 return 那里的任何值然后 stop 运行ning,所以尽管你有一个 for 循环你期望 运行 多次,它只会 运行 第一次迭代然后 return.

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

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