【问题标题】:Why is everything returning true in function javascript?为什么在函数 javascript 中一切都返回 true?
【发布时间】:2020-08-18 23:58:30
【问题描述】:

问题是:创建一个函数来检查我们是否需要订购更多糖果。如果 inStock 小于 weekAverage,则返回 true;否则,返回假。但是,无论我对这个函数做什么,我都无法让它正确返回。它为前两个糖果返回真(正确),但也为最后两个返回真,当它们应该为假时。有什么建议么?谢谢!

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(x, i) {
  for (let i = 0; i < x.length; i++) {
    if (x[i].inStock < x[i].weeklyAverage) {
      return true;
    }else {
      return false;
    }
    }
  }

【问题讨论】:

  • return 在第一次迭代时退出循环
  • “正确”的做法是const shouldWeOrderThisCandy = Object.fromEntries(inventory.map(entry=&gt;[entry.candy, entry.inStock &lt; entry.weeklyAverage])); - 这将产生一个对象,其中糖果名称作为键,布尔值作为值,指示是否应该补充糖果。
  • 谢谢你们的帮助,伙计们!这是针对训练营准备的练习回顾,所以我只是想让它匹配并通过他们的解决方案/期望。现在,它只是告诉我我的函数是通过循环的每次迭代还是失败
  • 如何调用shouldWeOrderThisCandy()函数?
  • shouldWeOrderThisCandy();

标签: javascript function return


【解决方案1】:

对于仍在查看此内容的任何人,您不需要 else 条件。

放:

return inventory[i].inStock < inventory[i].weeklyAverage

if 主体内,它会为循环的每次迭代返回 truefalse

【讨论】:

    【解决方案2】:

    试试这个以获得要订购的糖果列表。

    var shouldWeOrderThisCandy1 =() => inventory.filter(candyIn=> candyIn.inStock < candyIn.weeklyAverage).reduce((acc,candyIn) => { acc.push(candyIn.candy); return acc; },[]);
    shouldWeOrderThisCandy1();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-07
      • 1970-01-01
      • 2012-02-06
      • 2018-01-28
      • 2020-07-15
      相关资源
      最近更新 更多