【问题标题】:Implementing an add and remove function into my class在我的班级中实现添加和删除功能
【发布时间】:2020-10-11 17:58:17
【问题描述】:

我在下面有这段代码,它获取 PC 的项目并返回报价、价格等。到目前为止,我可以添加或删除组件的唯一方法是直接修改数组。这是代码

class PriceCalc {

    Motherboard = 520.99;
    RAM = 250.4;
    SSD = 500.8;
    HDD = 400.66;
    Case = 375.5;
    Monitor = 600.75;
    Keyboard = 100.99;
    Mouse = 25.5;

    constructor(Obj) {

        this.parts = Obj;
        this.cost = "$" + Obj.reduce((a, b) => a + this[b], 0).toFixed(2);
        this.retail = "$" + (Obj.reduce((a, b) => a + this[b], 0) + Obj.reduce((a, b) => a + this[b], 0) * 1.75).toFixed(2);
        this.quote = "Your quote is " + this.retail;
    }
}

This is the key values
quote = new PriceCalc(["Motherboard", "RAM", "SSD", "HDD", "Case", "Monitor", "Keyboard", "Mouse"]);
console.log(quote.parts);
console.log(quote.cost);
console.log(quote.retail);
console.log(quote.quote);

我想实现的是如下所示的代码,我可以在类中添加并调用它来向引用添加新部分或删除现有部分。

function removePart(arr, part) {
    return arr.filter(function (ele) {
        return ele != part;
    });

} var result = removePart(["Motherboard", "RAM", "SSD", "HDD", "Case", "Monitor", "Keyboard", "Mouse"], "Mouse");
console.log(result)

我想以一种可以调用 this.parts 的方式来实现它(如前面的代码中所述),或者调用一个将新部件推送到“部件”的新函数,或者调用一个删除某些部件的新函数已经在列表中。我希望我所描述的有意义

这是我的意思的一般示例模板,没有功能代码:

class quote {
    constructor(/*...*/) {
        this.parts = ....
    }
    add() {
        //adds item
    }
    remove() {
        //removes item
    }
}

example = new quote(["part1", "part2"])
add(part3)
console.log(example) //returns ["part1" "part2" "part3"]
remove(part1)
console.log(example) //returns ["part2" "part3"]

【问题讨论】:

    标签: javascript arrays string function class


    【解决方案1】:

    这应该可以工作

    class quote {
        constructor(initialParts) {
            this.parts = initialParts
        }
        add(part) {
            this.parts = [...this.parts, part]
        }
        remove(part) {
            this.parts = this.parts.filter( p => p !== part)
        }
    }
    
    example = new quote(["part1", "part2"])
    example.add('part3')
    console.log(example) //returns ["part1" "part2" "part3"]
    example.remove('part1')
    console.log(example) //returns ["part2" "part3"]
    

    如果您想要多个相同的项目,您仍然可以使用一个对象并将键存储为产品的名称,并将项目的数量存储为值。只需调整函数即可解决此问题。

    【讨论】:

    • 我不确定你的意思,虽然如果添加了重复的价格,这可能会很有帮助
    • 我已经在代码中实现了它并删除了项目,但我怎样才能让它也改变价格呢? ``
    • 您希望能够更改商品的价格和数量?
    • 这个想法是将它实现到顶部的第一个代码中,这是一个报价计算器。我想在报价单中添加或删除计算机部件并返回价格
    • quote4 = new PriceCalc(["RAM", "SSD", "Case", "Mouse"]); console.log(quote4.parts);//Returns ["RAM", "SSD", "Case", "Mouse"] console.log(quote4.cost);//Returns $1152.20 quote4.remove("Case"); console.log(quote4.parts);//Returns ["RAM", "SSD", "Mouse"] console.log(quote4.cost);//Returns $1152.20
    猜你喜欢
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 2022-11-29
    • 2019-01-07
    • 1970-01-01
    相关资源
    最近更新 更多