Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.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中解决此代码?将具有相同值的不同对象组合到单个数组中_Javascript_Node.js_Angular_Ecmascript 6 - Fatal编程技术网

如何在javascript中解决此代码?将具有相同值的不同对象组合到单个数组中

如何在javascript中解决此代码?将具有相同值的不同对象组合到单个数组中,javascript,node.js,angular,ecmascript-6,Javascript,Node.js,Angular,Ecmascript 6,输入 我需要输出为 var arr = [ [ Packet { status: 'Apple', count: '2' }, Packet { status: 'Lion', count: '2' } ], [ Packet { status: 'Donkey', count: '2' }, Packet { status: 'Apple', count: '2' }, Packet { status: 'Cat', count: '1

输入

我需要输出为

var arr = 
[
  [ 
    Packet { status: 'Apple', count: '2' },
    Packet { status: 'Lion', count: '2' }
   ],
  [
    Packet { status: 'Donkey', count: '2' },
    Packet { status: 'Apple', count: '2' },
    Packet { status: 'Cat', count: '1' }
  ],
  [
    Packet { status: 'Apple', count: '4' },
    Packet { status: 'Cat', count: '2' }
  ]
]
如何解决这个问题?? 被困在这里一周了

简单地说:

var-arr=
[{状态:'Apple',计数:'2'}
,{状态:'Lion',计数:'2'}
] 
,[{状态:'驴子',计数:'2'}
,{状态:'Apple',计数:'2'}
,{状态:'Cat',计数:'1'}
] 
,[{状态:'Apple',计数:'4'}
,{状态:'Cat',计数:'2'}
] 
] 
var arr2=arr.flat().reduce((a,c)=>
{
让item=a.find(x=>x.status==c.status)
if(!item)a.push({…c})
else item.count=(eval(`${item.count}+${c.count}')。toString(10)
归还
},[])
console.log(arr2)

。作为控制台包装器{max height:100%!important;top:0;}
您可以使用
reduce
并获取
对象。对象的值

const arr=[{status:'Apple',count:'2'},{status:'Lion',count:'2'},{status:'Apple',count:'2'},{status:'Cat',count:'1'},{status:'Apple',count:'4'},{status:'Cat',count count 2'}];
const result=Object.values(arr.flat().reduce)((a,
{status,count})=>((a[状态]??={status,count:0})。count+=+count,
a) ,{});
控制台日志(结果)用于展平数组,并使用进行汇总。还使用
+
前缀将字符串转换为数字,并使用扩展运算符部分修改对象

让arr=[{状态:'Apple',计数:'2'},{状态:'Lion',计数:'2'},{状态:'duck',计数:'2'},{状态:'Apple',计数:'1'},{状态:'Apple',计数:'4'},{状态:'Cat',计数:'2'}];
让输出=arr.flat().reduce((acc,curr)=>{
常量i=acc.findIndex(项=>项状态===当前状态);
如果(i!=-1)acc[i]['count']+=+curr['count'];
else acc.push({…curr,count:+curr['count']});
返回acc;
}, []);

控制台日志(输出)
您可以使用
arr.reduce
?这是否回答了您的问题?
数据包上的语法错误{…
@MisterJojo我假设
Packet
是这些对象的类的名称。几乎在那里。
Apple
的计数应该是
8
Cat
应该是
3
。@evolutionxbox我更新了我的密码answer@evolutionxbox更新了我的答案。您的
count
s不是字符串类型,如OP问题是
arr =
 [
    Packet { status: 'Donkey', count: '2' },
    Packet { status: 'Apple', count: '8' },
    Packet { status: 'Cat', count: '3' },
    Packet { status: 'Lion', count: '2' }
  ]