【问题标题】:Removing duplicates while adding their values in an array [duplicate]在数组中添加它们的值时删除重复项[重复]
【发布时间】:2020-06-01 09:17:56
【问题描述】:

假设我们有一个空字符串数组

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

【问题讨论】:

  • 到目前为止您尝试过什么?这似乎是一个简单的循环或.reduce() 案例

标签: javascript arrays object duplicates


【解决方案1】:

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

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

【讨论】:

  • 没有给出想要的输出
  • @Reactguy 现在请检查
  • 现在它只是删除重复项而不是添加值
  • @Reactguy 抱歉没听懂,能详细解释一下吗?
  • 我想添加重复项的值,但解决方案只是删除重复项而不添加值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-10
  • 2011-06-29
相关资源
最近更新 更多