如何基于数组项属性对打字稿数组中的值求和?

时间:2018-08-27 11:27:13

标签: typescript math

我正在从事小规模的项目。我有一系列收据,例如可乐,幻想,百事可乐,果汁等,当然还有它们的价格和数量。

receiptItems: Array<ReceiptItem>;

ReceiptItem的外观如下:

export class ReceiptItem {

  public id: string;
  public product: Product;
  public unitOfMeasure: UnitOfMeasure;
  public discount: number;
  public price: number;
  public quantity: number;
  public total: number;
  public tax:Tax;

 }

如何在打字稿中获取总额的总和,但仅在例如财产税等于“ 25%”的情况下?

在C#中,我记得我曾经使用过如下的lambda表达式:

IEnumerable<ReceiptItems> results = receiptItems.Where(s => s.Tax == "25.00");
   totalSum = results.Sum(x => (x.TotalAmount));

如何在TypeScript / Angular中实现类似的功能?

1 个答案:

答案 0 :(得分:10)

JavaScript / TypeScript 中的

数组也具有此类方法。您可以再次根据条件filter,然后使用reduce聚合函数对项目求和。

const sum = receiptItems.filter(item => item.tax === '25.00')
                        .reduce((sum, current) => sum + current.total, 0);

item.tax === '25.00'-这部分您必须根据逻辑进行调整