根据条件合并数组



好的,我有一个像下面这样的数组

[
{data: Array(22), title: '1111'}
{data: Array(12), title: '2222'}
{data: Array(6), title: '1111'}
{data: Array(22), title: '3333'}
{data: Array(0), title: '4444'}
]

如果有重复标题的对象(如{data: Array(22), title: '1111'}{data: Array(6), title: '1111'}),我想要合并具有相同标题的对象的data数组。

所以我的最终输出应该是
[
{data: Array(28), title: '1111'}
{data: Array(12), title: '2222'}
{data: Array(22), title: '3333'}
{data: Array(0), title: '4444'}
]

我也尝试过一些lodash函数和javascript过滤器。我尝试了forEach、映射等。但是不能掌握做我需要的方法。

您可以使用Array#reduce

let arr = [
{data: [1,2,3], title: '1111'},
{data: [4,5], title: '2222'},
{data: [6], title: '1111'},
{data: [7,8,9,10], title: '3333'},
{data: [11,12,13,14,15], title: '4444'}
]
let res = Object.values(arr.reduce((acc, {title, data})=>{
(acc[title] ??= {title, data: []}).data.push(...data);
return acc;
}, {}));
console.log(res);