Javascript 如何从一个具有相同id的数组中删除多个项目,但在增加其“数量”的同时保留一个项目?

Javascript 如何从一个具有相同id的数组中删除多个项目,但在增加其“数量”的同时保留一个项目?,javascript,arrays,object,Javascript,Arrays,Object,我有这样一个数组: const arr = [ { price: 12, desc: 'desc', id: 123, qty: 1 }, { price: 12, desc: 'desc', id: 123, qty: 1 }, { price: 12, desc: 'desc', id: 123, qty: 1 } ]; 我希望能够删除x个数量的项目,直到只剩下一个id为123的项目。然而,我也想增加该项目的数量,无论有多少其他项目有相同的id 例如,我想要一个这样的结果数组: const

我有这样一个数组:

const arr = [
{ price: 12, desc: 'desc', id: 123, qty: 1 },
{ price: 12, desc: 'desc', id: 123, qty: 1 },
{ price: 12, desc: 'desc', id: 123, qty: 1 }
];
我希望能够删除x个数量的项目,直到只剩下一个id为123的项目。然而,我也想增加该项目的数量,无论有多少其他项目有相同的id

例如,我想要一个这样的结果数组:

const result = [ { price: 12, desc: 'desc', id: 123, qty: 3 } ];
您可以使用函数reduce对匹配的ID进行分组和计数

const arr=[{price:12,desc:'desc',id:123,qty:1},{price:12,desc:'desc',id:123,qty:1},{price:12,desc:'desc',id:123,qty:1}]; //函数Object.values返回每个对象的值,例如: //累加器={ //123:{price:12,desc:'desc',id:123,qty:3} // } //函数Object.values返回: //{价格:12,描述:'desc',id:123,数量:3} const result=Object.valuesarr.reducea,c=>{ //累加器“a”将包含以下对象: //{'123':{id:123,desc:'desc'..,数量:2}} //此行检查具有“c.id”的当前对象 //如果该对象不存在,将使用创建一个新对象 //另一个名为“qty”的属性,然后我们添加+1 a[c.id]| | a[c.id]=Object.assignc,{qty:0}.qty++; 返回a; }, {}; console.logresult;
.作为控制台包装{最大高度:100%!重要;顶部:0;}到目前为止您尝试了什么?请添加您的代码您介意解释一下reduce是如何使用此功能的吗?以及reduce中的内容在做什么。我是一个JS noob。谢谢@Ele,我认为这很有帮助!