将空数组返回为 false?

Returning an empty array as false?

我正在练习函数并编写了这段代码以在 inStock 小于每周平均值时打印一个布尔值。该代码适用于该目的。问题是,如果数组未定义,我需要它 return false。目前它无法读取未定义的 'instock value'。如果有人能指出正确的方向,我将不胜感激。

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")

试试这个:

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

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

if (object && object.inStock < object.weeklyAverage) {