【问题标题】:trouble multiplying in JavaScriptJavaScript 中的乘法问题
【发布时间】:2020-08-10 23:01:29
【问题描述】:
     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,依此类推。

【问题讨论】:

  • 你的代码在哪里?
  • 对不起,我一开始很难添加它,这是一个更新
  • 你是怎么调用函数的?请提供 minimal reproducible example,最好是 Stack Snippet。
  • 使用 (inventory, "candy string") 调用
  • 嗨,对不起,我不知道堆栈 sn-p 是什么。我是编程新手,目前正在自学

标签: javascript function multiplication


【解决方案1】:

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

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

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

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

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

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

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

【讨论】:

  • 哇,这太清晰了,很容易理解。我更了解我的问题,感谢您抽出宝贵时间提供帮助
【解决方案2】:
  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"));

【讨论】:

  • @MarayshaWashington 这是 JavaScript。还会是什么?
  • 非常感谢
  • @MarayshaWashington 没问题。
  • 我没用过 const。我只熟悉让这就是我问的原因
  • @MarayshaWashington 我明白了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-02
  • 2023-03-09
  • 1970-01-01
  • 2015-09-06
  • 1970-01-01
相关资源
最近更新 更多