Home > front end >  Getting unique objects from object of array based on property value in Javascript
Getting unique objects from object of array based on property value in Javascript

Time:03-24

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)
     }
  } 
  • Related