我正在开发一个小的Angular项目。我有一个收据条目的数组,比如可乐、芬达、百事可乐、果汁等,当然还有它们的价格和数量。
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;
}
我如何在TypeScript中获取总金额的总和,但仅在属性税为“25%”时才计算?
在C#中,我记得我使用过像这样的Lambda表达式:
IEnumerable<ReceiptItems> results = receiptItems.Where(s => s.Tax == "25.00");
totalSum = results.Sum(x => (x.TotalAmount));
如何在TypeScript / Angular中实现类似的功能?
reduce
是一种类似于C#中的Aggregate
的聚合函数。它会获取每个迭代项的总数,并在此过程中将每个项的total
相加到total
(总和)中,最终得出总和。 - Suren SrapyanSum()
LINQ 函数的方法。但是可以使用Aggregate()
来编写Sum()
。 - Romain Deneaufilter
过滤,然后用reduce
求和。 - Romain DeneaureceiptItems
包含大量项的情况下,过滤部分可以直接在reduce
中完成:receiptItems.reduce((sum, x) => sum + (x.tax === '25.00' ? x.total : 0));
- Romain Deneau