I have an array of objects:
const data = [{
"Name": "Mike",
"Age": "24",
"debt": "1000"
},
{
"Name": "Mike",
"Age": "24",
"debt": "2000"
},
{
"Name": "Nathan",
"Age": "26",
"debt": "500"
},
]
How do I create an array of objects based on unique values of Name and Including sum of all debts assigned with that name?
For example:
const newData= [{
"Name": "Mike",
"Age": "24",
"debt": "3000"
},
{
"Name": "Nathan",
"Age": "26",
"debt": "500"
},
]
I have tried several ways, among which I first get unique data based on name:
//Original data
const data = [{
"Name": "Mike",
"Age": "24",
"debt": "1000"
},
{
"Name": "Mike",
"Age": "24",
"debt": "2000"
},
{
"Name": "Nathan",
"Age": "26",
"debt": "500"
},
]
//getting unique values based on name
const unique = [...new Set(data.map(item => item.Name))]
//mapping and adding each name into saperate object and later //combining it using Object.merge after adding new Debt which //contains sum of both the debts
for (value in unique) {
var datamenu = data.map(function(element, index, array) {
if (element.Instrument === value) {
unique[value] = element
}
return unique[value]
})
}
console.log(datamenu)
But I only get output of Nathan in place of mike too.
CodePudding user response:
the below code may help you.
const arr = [
{
"Name": "Mike",
"Age": "24",
"debt": "1000"
},
{
"Name": "Mike",
"Age": "24",
"debt": "2000"
},
{
"Name": "Nathan",
"Age": "26",
"debt": "500"
},
];
let unique = []
for (let char of arr) {
let check = unique.find(e=> {
if(char.Name == e.Name){
e.debt = parseInt(e.debt) parseInt(char.debt)
return true
}
return false;
})
if(!check) {
unique.push(char)
}
}