0

如果 inStock 小于每周平均值,我正在练习函数并编写此代码以打印布尔值。该代码为此目的而工作。问题是,如果数组未定义,我需要它返回 false。就目前而言,它无法读取未定义的“库存值”。如果有人能指出我正确的方向,我将不胜感激。

let altInventory = [{
        candy: "Twizzlers",
        inStock: 180,
        weeklyAverage: 200
    },
    {
        candy: "Milk Duds",
        inStock: 300,
        weeklyAverage: 170
    },
]
// ===================================================

function findCandy(inv, cand) {
    for (let i = 0; i < inv.length; i++) {
        if (inv[i].candy === cand) {
            return inv[i];
        }
    }
}

function shouldWeOrderThisCandy(inv, cand) {
    let object = findCandy(inv, cand);
    if (object.inStock < object.weeklyAverage) {
        return true;
    }
    return false;
}

我试过包括这个,但它似乎没有效果。

if (object.length === 0);
return false



//shouldWeOrderThisCandy(altInventory, "Milk Duds")
//shouldWeOrderThisCandy(altInventory, "Twizzlers")
shouldWeOrderThisCandy(altInventory, "Broccoli")
4

2 回答 2

1

试试这个:

let altInventory = [
   { candy: "Twizzlers", inStock: 180, weeklyAverage: 200 },
   { candy: "Milk Duds", inStock: 300, weeklyAverage: 170 },
]; // Just in case you made a mistake, you need to put a semi-colon to end the statement.

function findCandy(inv, cand) {
   for (let i =0; i < inv.length; i++) {
      if (inv[i].candy === cand) { return inv[i]; }
   }
   return; // Have the function return at the end. You can make it return null or 0.
}

function shouldWeOrderThisCandy(inv, cand) {
   let object = findCandy(inv, cand);

   // since findCandy() now returns something, check if (object) so that it will work.
   if (object && object.inStock < object.weeklyAverage) { return true; }
   return false;
}
于 2020-10-07T00:30:22.337 回答
1

未定义的变量将评估为“假”。所以你可以尝试这样的事情:

if (object && object.inStock < object.weeklyAverage) {
于 2020-10-07T00:32:50.807 回答