如何在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' }
]