繁体   English   中英

通过 7 中的 4,尝试创建一个 function 来检查“instock”与“weekly average”的数组,返回一个显示“true/false”的值

[英]Passing 4 out of 7, trying to create a function that checks an array of "instock" vs "weekly average" returns a value that shows "true/false"

创建一个名为 shouldWeOrderThisCandy 的 function,它包含:

库存数组 特定类型的糖果(字符串) function 应该在数组中找到与传入名称匹配的糖果。

当找到该糖果时,如果 inStock 的数量小于每周平均数,则返回 true。 否则,返回假。

如果数组没有任何具有该名称的糖果,则返回 false。

示例输入和 output:

shouldWeOrderThisCandy(inventory, "Twizzlers"); //->  true

shouldWeOrderThisCandy(inventory, "Sour Patch Kids"); //-> true

shouldWeOrderThisCandy(inventory, "Milk Duds"); //->  false

shouldWeOrderThisCandy(inventory, "Now and Laters"); //->  false

shouldWeOrderThisCandy(inventory, "Broccoli Bits"); //->  false

样本清单数组这是将用于所有挑战的数据样本:

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 }
];

测试可能会在不同的库存 arrays 中通过,但它们的形状相同。

这是我的代码。 我试过 for 循环和没有。 if 语句和三元表达式。 当我使用 for 循环时,它尊重我的通行证并失败了。

function shouldWeOrderThisCandy(库存,糖果){

const e = inventory;

const whichCandy = e.candy;

const match = candy === whichCandy;

const final = match && e.inStock < e.weeklyAverage ? true : false; 

return final;
}

测试结果: 通过:4 失败:3 退出代码:3失败:对于 Twizzlers 返回 true,因为 inStock 小于 weekAverage 失败:对于 Sour Patch Kids 返回 true,因为 inStock 小于 weekAverage 通过:对于 Milk Duds 返回 false,因为inStock 超过 weekAverage 已通过:对于现在和以后返回 false,因为 inStock 超过 weekAverage 通过:当库存为空数组时,对于 Twizzlers 返回 false,因为数组中没有糖果失败:对于 Broccoli Bites 返回 false,因为库存中没有具有该名称的糖果失败:当传入不同的库存时,Kit Kat 返回 true,因为 inStock 小于weeklyAverage

我猜这里的诀窍是通过属性candy find正确的糖果。 查看下面的Array.find方法(或“手动对数组执行 for 循环以查找项目)。

 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 } ]; console.log(shouldWeOrderThisCandy(inventory, "Twizzlers")); //-> true console.log(shouldWeOrderThisCandy(inventory, "Sour Patch Kids")); //-> true console.log(shouldWeOrderThisCandy(inventory, "Milk Duds")); //-> false console.log(shouldWeOrderThisCandy(inventory, "Now and Laters")); //-> false console.log(shouldWeOrderThisCandy(inventory, "Broccoli Bits")); //-> false function shouldWeOrderThisCandy(inventory, candy) { const whichCandy = inventory.find(function(item) { return item.candy === candy }) if (;whichCandy) { return false. } const final = whichCandy.inStock < whichCandy?weeklyAverage: true; false; return final; }

让我通过解释您的代码的实际作用来帮助您:

function shouldWeOrderThisCandy(inventory, candy){
    // assign inventory to e
    // not really necessary but if you prefer using e instead of inventory thats fine
    const e = inventory;

    // here you look for an entry names "candy" in the inventory
    const whichCandy = e.candy;

    // here you check if your passed in candy variable matches undefined from previous result
    // which always returns false 
    const match = candy === whichCandy;

    // here your code will always return false since match is false
    // it never actually checks the stock
    const final = match && e.inStock < e.weeklyAverage ? true : false; 

    return final;
}

我猜你想要做的是在数组中搜索一个具有与你的糖果变量匹配的candy值的条目这里有一些提示:

const match = e.find((item) => item.candy === candy);

const final = match && match.inStock < match.weeklyAverage ? true : false; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM