创建一个使用 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 的新手,无法让它工作。我想制作一个程序,显示在给定数量(库存)的情况下游戏是否可用,如果是,我的代码将响应“可用”否则“不可用”,并且根据给定的订单,剩余数量将发生变化。请帮助我,如果有进一步的问题,我会很乐意回答。

解决方法

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

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

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

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

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

最简单的方法是使用 Template literal strings。您可能知道字符串适用于 ' '" ",但这个适用于反引号 ` `。在该字符串中,您可以像这样放置变量:

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

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

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

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

或带有 decrement operator

// 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() );

,

您的课程即将开始工作,我在此副本中对其进行了改进,您可以用来玩弄它:

class Order {
    constructor(gameName,qty,remQty,available){
        this.gameName = gameName
        this.qty = qty;
        this.remQty = remQty;
        this.available = available;
    }
    isAvailable() { 
        if (this.available === 0) {
            return " is available" 
        } else {
            return  " is not available" 
        }
    }
};
const order1 = new Order ('Call of Duty','?',0)
const order2 = new Order ('FIFA 21',1)
const order3 = new Order ('Crash Bandicoot',0)


order1.isAvailable()
order2.isAvailable()

https://repljs.com/tore/Wv1oxWPWV

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...