javascript - 如何找到所有创建的对象的总数?

标签 javascript oop

我想通过“汉堡”类找到所有创建的对象的共同总和,以便找到“汉堡”平均数量(所有订单的总和除以数量)的错误计算。使用“calculatePrice”方法,我得到了汉堡的总价。如何搜索所有汉堡的共同总和,我可以除以它们的数量并得到所有“订单”的平均成本告诉我如何正确找到所有创建的汉堡的总价格?

сlass Hamburger {

    constructor(size, ...stuffing) {
        this.size = size;
        this.stuffing = stuffing;
        this.toppingArr = [];
        this.counter = ++Hamburger.counter;
    }

    addTooping(toop) {
        return this.toppingArr.push(toop)
    }

    getTooping() {
        const toppName = this.toppingArr.map(el => el.name);
        return `Toopping: ${toppName}`
    }

    getSize() {
        return `${this.size.name} burger\n`
    }

    getStuffing() {
        const stuffName = this.stuffing.map(el => el.name);
        return `Stuffing: ${stuffName}\n`
    }

    calculatePrice() {
        const stuffingCost = this.stuffing.map(el => el.price).reduce((p, c) => p + c);
        const toppingCost = this.toppingArr.map(el => el.price).reduce((p, c) => p + c);
        const allCost = this.size.price + stuffingCost + toppingCost;
        return `Total burger price: ${allCost}`
    }

    calculateCalories() {
        const stuffingKcal = this.stuffing.map(el => el.kcal).reduce((p, c) => p + c);
        const toppingKcal = this.toppingArr.map(el => el.kcal).reduce((p, c) => p + c);
        const allKcal = this.size.kcal + stuffingKcal + toppingKcal;
        return `Total burger calories: ${allKcal}`
    }

}
Hamburger.counter = 0;

Hamburger.small = {
    name: 'small',
    price: 10,
    kcal: 200
}
Hamburger.cheese = {
    name: 'cheese',
    price: 4,
    kcal: 10
}
Hamburger.meet = {
    name: ' meet',
    price: 40,
    kcal: 103
}
Hamburger.mayo = {
    name: 'mayo',
    price: 4,
    kcal: 10
}
Hamburger.oil = {
    name: ' oil',
    price: 1,
    kcal: 2
}


let humb1 = new Hamburger(Hamburger.small, Hamburger.cheese, Hamburger.meet);
console.log(humb1.getSize());
console.log(humb1.getStuffing());
humb1.addTooping(Hamburger.mayo);
humb1.addTooping(Hamburger.oil);
console.log(humb1.getTooping());
console.log(humb1.calculatePrice());
console.log(humb1.calculateCalories());
console.log(humb1);
 let humb2 = new Hamburger(Hamburger.small, Hamburger.cheese) 

最佳答案

如果您想将多个 Hamburger 元素相加,您有很多选择。根据您的评论,我认为您正在寻找这样的东西:

let burgers = [];

// create all burgers
burgers.push(new Hamburger(..));
burgers.push(new Hamburger(..));
burgers.push(new Hamburger(..));
burgers.push(new Hamburger(..));

// sum
let sum = burgers.reduce((a,b) => a.calculatePrice() + b.calculatePrice(), 0);

// average
let avg = sum / Hamburger.counter;

关于javascript - 如何找到所有创建的对象的总数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52592972/

相关文章:

javascript - 如何删除谷歌地图的位置框(左上角)?

java - Java 组合框 Action 监听器

c# - 数据提供者与存储库

javascript - 将json多维转换为数组javascript

javascript - 当变量选择数组中的元素时,为什么 Node 看不到该元素?

javascript - 如何获取 'selectionchange' dom 事件的目标元素

javascript - 显式 typeof == "undefined"检查与仅检查其存在?

php - 正确的方法?数据库实体的 PHP 对象

python - 如果来自不同类的对象相互交互可以吗?

oop - 是否可以从特征内访问结构字段?