在arrray中,多个对象需要使用javascript使用sum值megre单个对象
我有一个包含多个数组对象的数组的结果,我需要将结果合并到单个数组中,唯一值为在arrray中,多个对象需要使用javascript使用sum值megre单个对象,javascript,arrays,object,merge,sum,Javascript,Arrays,Object,Merge,Sum,我有一个包含多个数组对象的数组的结果,我需要将结果合并到单个数组中,唯一值为content和值为sumtotal,如下所示。我们非常感谢你的帮助 结果集 期望结果 我当前的实现尝试执行以下操作: var transformed = arr.reduce(function(a, b){ return a.concat(b); }); console.log(transformed ); 如果所有嵌套数组中的顺序相同,则可以使用以下命令 var-arr=[ [{ 内容:'aqrie', 总数:
content
和值为sumtotal
,如下所示。我们非常感谢你的帮助
结果集
期望结果
我当前的实现尝试执行以下操作:
var transformed = arr.reduce(function(a, b){ return a.concat(b); });
console.log(transformed );
如果所有嵌套数组中的顺序相同,则可以使用以下命令
var-arr=[
[{
内容:'aqrie',
总数:5
}, {
内容:“邮件功能”,
总数:4
}],
[{
内容:'aqrie',
总数:4
}, {
内容:“邮件功能”,
总数:10
}]
];
//用于合并阵列的reduce函数
var res=arr.reduce(函数(a,b){
//迭代数组以更新总数
var ret=a.map(函数(v,i){
v、 总计+=b[i]。总计;
//返回更新的对象
返回v;
});
//返回合并数组
返回ret;
});
document.write(''+JSON.stringify(res,null,3)+'')代码>试试看
函数展平和和(arr){
var newArr=[];
var存在;
arr.forEach(功能(itm){
itm.forEach(功能(内部){
现有=findIt(内部,新arr);
如果(现有){
现有的.total+=内部的.total;
}否则{
新推力(内);
}
});
});
返回newArr;
}
函数findIt(obj,newArr){
对于(var i=0;ipranav,OP的要求与您的回答完全不同。@PranavCBalan我有数组的动态值,我不使用静态方法的此函数
[
{
content: 'Aqurie',
total: 9
},
{
content: 'Mail function',
total: 14
}
]
var transformed = arr.reduce(function(a, b){ return a.concat(b); });
console.log(transformed );
function flattenAndSum(arr){
var newArr = [];
var existing;
arr.forEach(function(itm){
itm.forEach(function(inner){
existing = findIt(inner,newArr);
if(existing){
existing.total += inner.total;
} else {
newArr.push(inner);
}
});
});
return newArr;
}
function findIt(obj,newArr){
for(var i=0;i<newArr.length;i++) {
if(newArr[i].content === obj.content){
return newArr[i];
}
}
}
console.log(flattenAndSum(arr));