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

Rox*_*Pro 8 math typescript

我正在做一个小的角度项目。我有一系列的收据项目,例如可乐,fanta,百事可乐,果汁等,当然还有它们的价格和数量。

receiptItems: Array<ReceiptItem>;
Run Code Online (Sandbox Code Playgroud)

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;

 }
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Sur*_*yan 19

JavaScript / TypeScript中的数组也具有此类方法。您可以再次filter根据条件进行调整,然后使用reduce聚合函数对各项求和。

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

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

  • @roxypro:请注意,当过滤器生成一个中间数组时,如果`receiptItems`包含很多项目,过滤部分可以直接在`reduce`中完成:`receiptItems.reduce((sum, x) =&gt; sum + (x.tax === '25.00' ? x.total : 0));` (4认同)