[英]Given array, write a function and return a boolean value
我需要编写一个名为shouldWeOrderThisCandy(inventory, candy)
的函数。
该函数应该在数组中找到与传入的名称匹配的糖果。
找到那个糖果后,如果 inStock 的数量小于每周平均值,则返回true
。
否则返回false
。
如果数组没有任何具有该名称的糖果,则返回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 }
];
到目前为止我所拥有的(我是 JS 新手):
function shouldWeOrderThisCandy(inventory, candy) {
for (let i = 0; i < inventory.length; i++) {
if (inventory.inStock < inventory.weeklyAverage) {
return true;
}
else if (inventory.includes(inventory.candy)) {
return false;
}
else {
return false;
}
}
}
示例输出:
shouldWeOrderThisCandy(inventory, "Twizzlers"); //-> true
在您的代码中,没有部分可以找到具有相同candy
名称的inventory
项目。
首先,您应该找到具有输入candy
名称的项目并从该项目中获取结果。
这可以使用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 existed = inventory.find((item) => item.candy === candy); if (existed && existed.inStock < existed.weeklyAverage) { return true; } return false; } console.log(shouldWeOrderThisCandy(inventory, "Twizzlers"));
与 Derek 的回答类似,删除 if 条件,因为它不是必需的。
const 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 existed = inventory.find(item => item.candy === candy);
return existed && existed.inStock < existed.weeklyAverage;
}
console.log(shouldWeOrderThisCandy(inventory, "Twizzlers"));
这是使用 OP 方法的更正逻辑:
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) { // loop through the inventory for (let i = 0; i < inventory.length; i++) { // if the current candy(inventory[i]) is the candy we are looking for, step in // otherwise, skip this candy and continue the next iteration if(inventory[i].candy === candy) { // check the stock if (inventory[i].inStock < inventory[i].weeklyAverage) { return true; } else { return false; } } } // if didn't find the candy return false; } console.log(shouldWeOrderThisCandy(inventory, "Twizzlers"));
只需使用array.some()
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( arr, candy ) { return arr.some(x=>x.candy===candy && x.inStock < x.weeklyAverage) } console.log('Twizzlers ->', shouldWeOrderThisCandy(inventory, 'Twizzlers')) // true console.log('Milk Duds ->', shouldWeOrderThisCandy(inventory, 'Milk Duds')) // false console.log('xxx ->', shouldWeOrderThisCandy(inventory, 'xxx')) // false
.as-console-wrapper { max-height: 100% !important; top: 0; }
供参考。 这对我(经过几个小时的磨练)对未来的初学者 Javascript 学生有用:
function shouldWeOrderThisCandy(inventory, candy) { for(let i = 0; i < inventory.length; i++) { if(inventory[i].candy === candy) { if(inventory[i].inStock < inventory[i].weeklyAverage) { return true; } else { return false; } } else if(candy.length <= 0 ) { return false; } } if(inventory.candy !== candy) { return false; } }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.