在数组中添加重复值的同时删除重复项

时间:2020-02-17 12:28:35

标签: javascript arrays object duplicates

让我们说我们还有一个包含空字符串的数组

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: "" },
]

我想删除重复的名称,并将其值添加到同一数组或另一个数组中。 所需的输出:

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

1 个答案:

答案 0 :(得分:0)

通过简单地循环检查重复性,可以减少数组。

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