首页 > 解决方案 > 使用 if else 状态创建显示可用性的服务

问题描述

) 我有以下代码:

    class order {
        constructor(gameName, qty, remQty, available){
            this.gameName = gameName
            this.qty = qty;
            this.remQty = remQty;
            this.available = available;
        }
        function() { 
            if (this.available == 0) {
                return " is available" 
            } else {
                return  " is not available" 
            }
        }
    };
    let order = new order ('Call of Duty', '?', '?','?')
    let order = new order ('FIFA 21', '?', '?','?')
    let order = new order ('Crash Bandicoot', '?', '?','?')
    
    
    console.log(order1)

我的问题是,我是 JavaScript 新手,我无法让它工作。我想制作一个程序,显示给定数量(库存)的游戏是否可用,如果是,我的代码将响应“可用”否则“不可用”,并且根据给定的订单,剩余数量将发生变化。请帮助我,如果有其他问题我会很乐意回答。

标签: javascriptfunctionconstructorclass-diagram

解决方案


你的尝试实际上非常接近,甚至比它必须的更复杂。丢掉一些参数,remQtyavailable可以走了。数量将简单地用一个在每次轮询可用性后递减的数字来确定。

我命名了魔法发生 getAvailability的函数。这个名称表明我们获得了正在处理的订单的可用性。

在它里面你想知道:有什么可用的。这个答案可以通过检查我们的数量还剩下多少来确定。我们可以通过检查数量是否大于零> 0来做到这一点。

if (this.qty > 0) {
  // Quantity is more than 0.
} else {
  // Quantity is not more than 0.
}

在这里,您将返回带有可用性文本的不同字符串。为了给它一些润色,最好使用插值在字符串中注入游戏名称,这是一个用于组合变量和字符串的奇特词。

最简单的方法是使用模板文字字符串。您可能知道字符串可以与' 'or一起使用" ",但这个可以与反引号一起使用` `。在该字符串中,您可以像这样放置变量:

// this.gameName refers to the same gameName used in the constructor.
`${this.gameName} is available`;

现在在返回您的字符串(这将结束函数)之前,您需要修改您的订单数量。这意味着减去this.qty1。这可以通过递减赋值来完成:

// We assign a new value..
this.qty = this.qty - 1;

// ..this does the same, but is shorter.
this.qty -= 1;

或使用减量运算符

// This is also the same, but here it always decrements with 1.
this.qty--;

现在您所要做的就是调用getAvailability方法(调用意味着运行函数,方法意味着作为对象一部分的函数)并检查它返回的响应。

您可以使用 输出变量和返回值console.log()。让这个工具成为你的朋友。它将照亮黑暗的地方,并帮助您弄清楚下一步。

检查下面的示例,该示例将所有这些原则放在一起。随时提出任何问题。欢迎来到 JavaScript 的奇妙世界。

class Order {
  constructor(gameName, qty) {
    this.gameName = gameName;
    this.qty = qty;
  }

  getAvailability() {
    if (this.qty > 0) {
      this.qty--;
      return `${this.gameName} is available`;
    } else {
      return `${this.gameName} is not available`;
    }
  }
};

let codOrder = new Order('Call of Duty', 5);
let fifaOrder = new Order('FIFA 21', 2);
let crashBandicootOrder = new Order('Crash Bandicoot', 1);

console.log( codOrder.getAvailability() );
console.log( codOrder.getAvailability() );
console.log( codOrder.getAvailability() );
console.log( codOrder.getAvailability() );
console.log( codOrder.getAvailability() );
console.log( codOrder.getAvailability() );

console.log( fifaOrder.getAvailability() );
console.log( fifaOrder.getAvailability() );
console.log( fifaOrder.getAvailability() );

console.log( crashBandicootOrder.getAvailability() );
console.log( crashBandicootOrder.getAvailability() );


推荐阅读