根据折扣金额自动计算总金额

时间:2020-07-27 11:44:40

标签: javascript angular typescript

我正在对将显示在HTML中的数组中的项目总成本进行一些计算,总和应使得在进行计算时,应考虑将discount amount与{{ 1}},然后在each row之前加总所有行以得出总和。

数据

sums

我拥有的当前代码

costItems = [
{
    name: 'Corn Flakes'
    unitPrice: 9,
    quantity: 10,
    hasDiscount: false,
    discountPercentage: 10
},
{
    name: 'Sugar'
    unitPrice: 5,
    quantity: 10,
    hasDiscount: true,
    discountPercentage: 10
},
{
    name: 'Bread'
    unitPrice: 2,
    quantity: 7,
    hasDiscount: false,
    discountPercentage: 0
},
{
    name: 'Salt'
    unitPrice: 1,
    quantity: 4,
    hasDiscount: false,
    discountPercentage: 0
}
]

这是通过计算总金额而不考虑折扣金额来实现的,但我要做的是考虑其中的折扣

2 个答案:

答案 0 :(得分:0)

您可以使用Array.prototype.reduce

let costItems = [{
    name: 'Corn Flakes',
    unitPrice: 9,
    quantity: 10,
    hasDiscount: false,
    discountPercentage: 10
  },
  {
    name: 'Sugar',
    unitPrice: 5,
    quantity: 10,
    hasDiscount: true,
    discountPercentage: 10
  },
  {
    name: 'Bread',
    unitPrice: 2,
    quantity: 7,
    hasDiscount: false,
    discountPercentage: 0
  },
  {
    name: 'Salt',
    unitPrice: 1,
    quantity: 4,
    hasDiscount: false,
    discountPercentage: 0
  }
];

let sum = costItems.reduce((acc, val) => acc += (val.quantity * val.unitPrice) * ((100 - val.discountPercentage) / 100), 0);

console.log(sum)

答案 1 :(得分:0)

const costItems = [
    {
        name: 'Corn Flakes',
        unitPrice: 9,
        quantity: 10,
        hasDiscount: false,
        discountPercentage: 10,
    },
    {
        name: 'Sugar',
        unitPrice: 5,
        quantity: 10,
        hasDiscount: true,
        discountPercentage: 10,
    },
    {
        name: 'Bread',
        unitPrice: 2,
        quantity: 7,
        hasDiscount: false,
        discountPercentage: 0,
    },
    {
        name: 'Salt',
        unitPrice: 1,
        quantity: 4,
        hasDiscount: false,
        discountPercentage: 0,
    },
];

const totalSum = costItems.reduce(
    (sum, { unitPrice, quantity, discountPercentage }) =>
        (sum += unitPrice * quantity * (1 - discountPercentage / 100)),
    0,
);

console.log(totalSum);