Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to sum values in typescript array based on array items property?

I'm working on small angular project. I have an array of receipt items, e.g. coke, fanta, pepsi, juice etc, with their prices and quantity of course.

receiptItems: Array<ReceiptItem>; 

This is how ReceiptItem looks :

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;   } 

How can I in typescript get sum of total amount but only where property tax for example is equal to "25%"?

In C# I remember I've used lambda expressions like this:

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

How to achieve something similar in TypeScript / Angular?

like image 340
Roxy'Pro Avatar asked Aug 27 '18 11:08

Roxy'Pro


People also ask

How do you sum values in array of objects?

To sum a property in an array of objects:Initialize a sum variable, using the let keyword and set it to 0 . Call the forEach() method to iterate over the array. On each iteration, increment the sum variable with the value of the object.

How do you sum numbers in TypeScript?

function addNumbers(a: number, b: number) { return a + b; } var sum: number = addNumbers(10, 15) console. log('Sum of the two numbers is: ' +sum); The above TypeScript code defines the addNumbers() function, call it, and log the result in the browser's console. The above command will compile the TypeScript file add.

What is reduce in TypeScript?

TypeScript - Array reduce() reduce() method applies a function simultaneously against two values of the array (from left-to-right) as to reduce it to a single value.

How do you use reduce on array of objects in Javascript?

The reduce() method executes the function for each value of the array (non-empty array) from left to right. The reduce() method has the following syntax: let arr = [];arr. reduce(callback(acc, curVal, index, src), initVal);


1 Answers

Arrays in JavaScript/TypeScript also have these kind of methods. You can again filter with you condition and then use reduce aggregation function to sum the items.

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

item.tax === '25.00' - this part you must adjust with your logic

like image 135
Suren Srapyan Avatar answered Sep 19 '22 11:09

Suren Srapyan