【问题标题】:Pushing multiple items into an array within an instance of a class将多个项目推送到类实例中的数组中
【发布时间】:2018-10-23 21:01:38
【问题描述】:

我正在尝试构建 addTopping 方法,以便它可以接受多个浇头来推入浇头数组而不是一个。我不知道如何解决这个问题。我看过其他一些使用 .push.apply() 的帖子,这在我的情况下不起作用,因为它会创建一个对象。

  class Pizza {

      constructor(size, crust, stuffedcrust) {
        this.size = size;
        this.crust = crust;
        this.stuffedcrust = stuffedcrust;
        this.toppings = ["Cheese"];
      }

      addTopping(topping) {
        this.toppings.push(topping);
      }

      removeTopping(topping) {
        let index = this.toppings.indexOf(topping);
        this.toppings.splice(index, 1);
      }

      }

      let pizza1 = new Pizza("Medium", "thin", true);

      pizza1.addTopping("Pepperoni", "Green Peppers", "Mushrooms");
      console.log(pizza1);

pizza1.addTopping 目前只会添加第一项。

【问题讨论】:

    标签: javascript arrays class instance


    【解决方案1】:

    使用rest parameters 收集数组中的所有addToppings() 参数,并使用spread syntax 将数组转换为Array.push() 函数的参数:

    class Pizza {
    
      constructor(size, crust, stuffedcrust) {
        this.size = size;
        this.crust = crust;
        this.stuffedcrust = stuffedcrust;
        this.toppings = ["Cheese"];
      }
    
      addToppings(...toppings) { // rest
        this.toppings.push(...toppings); // spread
      }
    
      removeTopping(topping) {
        let index = this.toppings.indexOf(topping);
        this.toppings.splice(index, 1);
      }
    
    }
    
    let pizza1 = new Pizza("Medium", "thin", true);
    
    pizza1.addToppings("Pepperoni", "Green Peppers", "Mushrooms");
    
    console.log(pizza1);

    【讨论】:

    • 谢谢,我之前尝试过扩展运算符,但考虑到我没有将它包含在我的方法参数中,因此使用不正确!这非常有帮助,非常感谢!
    【解决方案2】:

    也许看看rest parameters。我想它会让你得到你想要的

    【讨论】:

      【解决方案3】:

      您可以使用 function.arguments,但它已被弃用。

      来源: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Function/arguments

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-13
        • 1970-01-01
        相关资源
        最近更新 更多