【问题标题】:Returning an empty array as false?返回一个空数组为假?
【发布时间】:2021-01-21 21:36:18
【问题描述】:

我正在练习函数并编写此代码以在 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")

【问题讨论】:

  • 用语言标记。有许多不同的语言有不同的规则。还需要一些时间来修复缩进并显示实际代码,而不是浮动的“我包含了这个”。
  • 请注意,如果findCandy 没有找到糖果,它不会返回任何内容,结果是undefined — 不是空对象/数组。
  • 啊,完美。我现在明白了。谢谢大家!

标签: javascript arrays function boolean


【解决方案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;
}

【讨论】:

  • 确保解释更改。
  • 好的,我在 sn-ps 中添加了 cmets。
  • 请注意,所有这些都返回相同的值(undefined一个[特殊]值):function f () { return undefined }function f () { return }function f () {}。没有可以分配给表达式的“无”。
【解决方案2】:

未定义的变量将评估为“假”。因此,您可以尝试以下方法:

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

【讨论】:

    猜你喜欢
    • 2011-10-10
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-11
    • 2018-08-06
    相关资源
    最近更新 更多