繁体   English   中英

给定数组,编写一个函数并返回一个布尔值

[英]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.

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