在 Angular 中显示具有重复出现次数的唯一项目

Show unique items with count of duplicate occurrences in Angular

我有如下对象数组:

var array =
[
    {"name":"user1","value":1}
    {"name":"user1","value":1}
    {"name":"user1","value":1}
    {"name":"user3","value":1}
    {"name":"user3","value":1}
]

我想统计不同值出现的次数,输出应该是这样的

var array =
[
    {"name":"user1","value":3}
    {"name":"user3","value":2}
]

我试过这个:

array.reduce((acc, o) => (acc[o.name] = (acc[o.name] || 0) + 1, acc), {})

但输出不是我想要的:

{
  "user1": 3,
  "user3": 2
}

var array = [
              {"name":"user1","value":1},
              {"name":"user1","value":1},
              {"name":"user1","value":1},
              {"name":"user3","value":1},
              {"name":"user3","value":1}
            ]
    
    var reduced = array.reduce((acc, o) => (acc[o.name] = (acc[o.name] || 0) + 1, acc), {});
    
    //Method 1
    let result1 = [];
    for (var prop in reduced) {
      result1.push({name:prop,value:reduced[prop]});
    }
    
    console.log(result1)

    //Method 2
    var result2 = Object.keys(reduced).map(x =>  {
            return {name : x, value : reduced[x]}})   
            
    console.log(result2)

尝试使用:

var array = [
  { name: "user1", value: 1 },
  { name: "user1", value: 1 },
  { name: "user1", value: 1 },
  { name: "user3", value: 1 },
  { name: "user3", value: 1 }
];

function removeDuplicate(arr) {
  let thing = [];
  arr.map(x => {
    thing.push({
      name: x.name,
      value: array.filter(y => y.name == x.name).length
    });
    arr
      .filter(y => y.name == x.name)
      .map(y => {
        array.splice(array.findIndex(z => z.name == y.name), 1);
      });
  });
  return thing;
}

console.log(removeDuplicate(array));

您可以使用下面的代码,采用相同的代码,但使用 Object keys() 方法

进行了扩展

thingsWithDuplicates = [
    {"name":"user1","value":1},
    {"name":"user1","value":1},
    {"name":"user1","value":1},
    {"name":"user3","value":1},
    {"name":"user3","value":1}
]; 
 distinctThings = thingsWithDuplicates.reduce((acc, o) => (acc[o.name] = (acc[o.name] || 0) + 1, acc), {});

 values = [];
 Object.keys(distinctThings).forEach(key => {
     values.push({'name': key, 'value': distinctThings[key]}) 
 });
 console.log(values);