【问题标题】:Create a service that shows availability using if else state使用 if else 状态创建显示可用性的服务
【发布时间】:2021-02-23 20:10:52
【问题描述】:

) 我有以下代码:

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

【问题讨论】:

  • 在您的情况下,Order 实际上是从各种库存中订购产品?还是Order 是股票本身?旁注:在 JavaScript 中,对象构造函数是用大写字母编写的。这是一种说明名称代表什么的方式,您应该使用 new 关键字(在大多数情况下)。
  • @emielZuurbier 它是股票本身。我并不是要实施一个拥有任何主要库存的系统。这只是一个简单的系统,显示客户已在“此游戏”上下订单,是否可用?你感觉到我了吗?
  • 我明白了。每当有人询问订单是否可用时,数量是否应该下降?为什么大多数论点都用问号填充?
  • 如果可能的话,是的。由于我是新手,我希望更有经验的作家回答这是否合适,或者我应该坚持股票 = 1 或 0。
  • 填满了问号,因为我不知道该写什么

标签: javascript function constructor class-diagram


【解决方案1】:

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

我将函数命名为神奇发生的地方getAvailability。这个名字表明我们得到我们正在处理的订单的可用性

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

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

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

最简单的方法是使用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() );

【讨论】:

    【解决方案2】:

    您的课程即将开始工作,我在此 repl 中对其进行了润色,您可以使用它来玩它:

    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

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 2016-10-13
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多