Javascript 如何删除对象中的重复值并添加重复元素的数量?

Javascript 如何删除对象中的重复值并添加重复元素的数量?,javascript,Javascript,我需要计算元素重复的次数,但我不知道如何删除重复的元素并添加计数器,只留下一个,例如: const list = [ {name:'A', count: 3 }, {name:'B', count: 2 }, {name:'C', count: 1 } ] const list=[ {id:1,名称:'A'}, {id:2,名称:'B'}, {id:3,名称:'A'}, {id:4,名称:'A'}, {id:5,名称:'B'}, {id:6,名称:'C'} ] 让电

我需要计算元素重复的次数,但我不知道如何删除重复的元素并添加计数器,只留下一个,例如:

const list = [

    {name:'A', count: 3 },
    {name:'B', count: 2 },
    {name:'C', count: 1 }

]
const list=[
{id:1,名称:'A'},
{id:2,名称:'B'},
{id:3,名称:'A'},
{id:4,名称:'A'},
{id:5,名称:'B'},
{id:6,名称:'C'}
]
让电流=零;
设计数器=0;
对于(变量i=0;i
因此您需要迭代数组,然后求项目总数。 在javascript中使用一些ES6数组方法很容易做到这一点

const list=[
{id:1,名称:'A'},
{id:2,名称:'B'},
{id:3,名称:'A'},
{id:4,名称:'A'},
{id:5,名称:'B'},
{id:6,名称:'C'}
];
//创建名称->计数的映射
const mappedListCount=list.reduce((acc,{name,})=>{
acc[name]=acc[name]?acc[name]+1:1;//增量计数
返回acc;
}, {});
//将映射转换为{name,count}数组
const listCount=Object.entries(mappedListCount.map([name,count])=>({name,count}));

console.log(listCount)基本上,您可以使用创建新数组来实现这一点,并在其中使用一些逻辑,然后使用填充数组

这种方法比使用嵌套循环或将数据从一种类型转换为另一种类型更容易

const list=[
{id:1,名称:'A'},
{id:2,名称:'B'},
{id:3,名称:'A'},
{id:4,名称:'A'},
{id:5,名称:'B'},
{id:6,名称:'C'}
]
常数减速机=(累计,当前值)=>{
const name=currentValue.name;
//我们在累积数组中查找值的索引。
const index=acum.findIndex(entry=>entry.name==name);
//如果索引不同于-1,则重复它,否则我们必须添加它。
如果(索引!=-1){
累计[索引]。计数+=1;
}否则{
累积推力({
姓名:姓名,,
计数:1
})
}
返回累计;
}
const result=list.reduce(reducer,[]);
控制台日志(结果)
const list=[
{id:1,名称:'A'},
{id:2,名称:'B'},
{id:3,名称:'A'},
{id:4,名称:'A'},
{id:5,名称:'B'},
{id:6,名称:'C'}
]
//首先,获取所有名称:
const listNames=Array.from(新集合(list.map(item=>item.name)))
console.log(列表名)
//其次,获取每个名称的计数并保存到新列表:
const newList=[]
listNames.forEach(name=>{
const count=list.filter(item=>item.name==name).length
push({name,count})
})
console.log(新列表)