Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript对象数组合并并删除重复项,同时对相同ID进行求和';s_Javascript_Arrays_Object_Reduce - Fatal编程技术网

Javascript对象数组合并并删除重复项,同时对相同ID进行求和';s

Javascript对象数组合并并删除重复项,同时对相同ID进行求和';s,javascript,arrays,object,reduce,Javascript,Arrays,Object,Reduce,我想减少一个数组,其中具有相同id的项有一个属性求和 数组将如下所示 array = [ { id: 123, qty: 10, unit: 'dollar' }, { id: 456, qty: 15, unit: 'euro' }, { id: 123, qty: 20, unit: 'dollar' }] array = [ { id: 123, qty: 30, unit: 'dollar' }, { id: 456, qty:

我想减少一个数组,其中具有相同id的项有一个属性求和

数组将如下所示

array = [
{
  id: 123,
  qty: 10,
  unit: 'dollar'
},
{
  id: 456,
  qty: 15,
  unit: 'euro'
},
{
  id: 123,
  qty: 20,
  unit: 'dollar'
}]
array = [
{
  id: 123,
  qty: 30,
  unit: 'dollar'
},
{
  id: 456,
  qty: 15,
  unit: 'euro'
}]
结果是一个如下所示的数组

array = [
{
  id: 123,
  qty: 10,
  unit: 'dollar'
},
{
  id: 456,
  qty: 15,
  unit: 'euro'
},
{
  id: 123,
  qty: 20,
  unit: 'dollar'
}]
array = [
{
  id: 123,
  qty: 30,
  unit: 'dollar'
},
{
  id: 456,
  qty: 15,
  unit: 'euro'
}]

我一直在尝试使用reduce来实现这一点,但没有效果。

下面是使用for循环和.find数组方法的简单方法

var数组=[
{
id:123,
数量:10,
单位:美元
},
{
身份证号码:456,
数量:15,
单位:欧元
},
{
id:123,
数量:20,
单位:美元
}];
var-res=[];
for(设i=0;i obj.id==array[i].id);
if(tempObj){
tempObj.qty+=数组[i]。数量;
}否则{
res.push(数组[i]);
}
}

控制台日志(res)
Array.filter()方法。签出mdn docs@MFK34,过滤器是错误的工具。@trincot,为什么使用过滤器是错误的?@MFK34,因为你需要所有对象的信息。@tincot,哦,好的,你能给我一个例子说明在哪里最好使用过滤器或者建议在哪里使用过滤器吗。我只是想了解为什么vs为什么不过滤。如果您有任何文档/链接解释了使用各种数组方法的推荐方法。谢谢