0

Lets say we have an array also with empty strings

const arr = [
  { value: 1, name: "king" },
  { value: 2, name: "master" },
  { value: 10, name: "lisa" },
  { value: 4, name: "lisa" },
  { value: 5, name: "jim" },
  { value: 6, name: "master" },
  { value: 1, name: "jim" },
  { value: 3, name: "" },
  { value: 2, name: "" },
]

I want to remove the duplicate names and add their values into same array or another array. Desired output:

[
  { value: 1, name: "king" },
  { value: 8, name: "master" },
  { value: 14, name: "lisa" },
  { value: 6, name: "jim" },
  { value: 5, name: "" },
]

1 Answers1

0

By simply looping checking for repetition, you can reduce array.

arr = [
  { value: 1, name: "king" },
  { value: 2, name: "master" },
  { value: 10, name: "lisa" },
  { value: 4, name: "lisa" },
  { value: 5, name: "jim" },
  { value: 6, name: "master" },
  { value: 1, name: "jim" },
   { value: 3, name: "" },
  { value: 2, name: "" },
];
var a = new Set();

var array2 = [];
for (i = 0; i < arr.length; i++) {
 if(!a.has(arr[i].name)){
   array2.push(arr[i]);
   a.add(arr[i].name);
 }
 else{
   var name = arr[i].name;
   for (j = 0; j < array2.length; j++) {
      if(array2[j].name == name ){
        array2[j].value += arr[i].value;
      }
  }
  
 
}
}
console.log(array2);
Manu Varghese
  • 791
  • 8
  • 25