I have an array of objects with the structure of :
const data = [
{
"Type": "SELL",
"Item": "Screws",
"Qty": "500",
"Price": 10,
},
{
"Type": "BUY",
"Item": "Screws",
"Qty": "1000",
"Price": 5,
},
{
"Type": "BUY",
"Item": "Screws",
"Qty": "1000",
"Price": 10,
},
{
"Type": "BUY",
"Item": "Bolts",
"Qty": "500",
"Price": 15,
},
]
How do I create an array based on unique values of Item and type both and Including sum of all Buys and sells in their separate objects.
For example, my output should be :
const data = [
{
"Type": "SELL",
"Item": "Screws",
"Qty": "500",
"Price": 10,
},
{
"Type": "BUY",
"Item": "Screws",
"Qty": "2000", //Sum of 1000 and 1000
"Price": 7.5, //Average of 5 and 10
},
{
"Type": "BUY",
"Item": "Bolts",
"Qty": "500",
"Price": 15,
},
]
I have tried several ways, among which I first get unique data based on Type:
//getting unique values based on name
let unique = []
for (let char of arr) {
let check = unique.find(e=> {
if(char.Type== e.Type){
e.Qty= parseInt(e.Qty) + parseInt(char.Qty)
return true
}
return false;
})
if(!check) {
unique.push(char)
}
}
But It only modifies quantity, and doesn't create separate objects for Types sell and buy.
Thankyou in advance.