javascript - how to merge 4 arrays object using lodash
问题描述
I am looking for best ways of doing this.
exData1 = [
{ name: "b", data1: "aa" },
{ name: "c", data1: "ee" },
];
exData2 = [
{ name: "a", data2: "cc" },
{ name: "b", data2: "bb" },
];
exData3 = [
{ name: "a", data3: "ee" },
{ name: "c", data3: "eee" },
];
exData4 = [
{ name: "a", data4: "ff" },
{ name: "b", data4: "cc" },
];
The end result I want is an array of merge with lodash:
resultData = [{
name: "b",
data1: "aa",
data2: "bb",
data4: "cc",
},
{
name: "c",
data1: "ee",
data3: "eee",
},
{
name: "a",
data2: "cc",
data3: "eee",
data4: "ff"
},
];
How do I do it the most efficient/clean way using lodash? Thanks!
解决方案
No need for lodash!
function combine(items = []) {
return Object.values(items.flat().reduce((a, c) => {
a[c.name] = {...(a[c.name] || {}), ...c};
return a;
}, {}));
}
exData1 = [
{ name: "b", data1: "aa" },
{ name: "c", data1: "ee" },
];
exData2 = [
{ name: "a", data2: "cc" },
{ name: "b", data2: "bb" },
];
exData3 = [
{ name: "a", data3: "ee" },
{ name: "c", data3: "eee" },
];
exData4 = [
{ name: "a", data4: "ff" },
{ name: "b", data4: "cc" },
];
console.log(combine([exData1, exData2, exData3, exData4]));
推荐阅读
- redis - Redis:高打开文件数
- python - Python - 如果列名和行名相同,则转换值
- azure-devops - Azure DevOps 变量在步骤之间为空
- laravel - 从 laravel 令牌获取不记名令牌
- ios - 如何从 Podfile 检查 swift 版本?
- android - 如何在android中为xml中的所有视图添加放大和缩小动画
- android - 为什么 Room 仅在 JetPack Compose 中重新启动应用程序后才加载
- pytorch - 什么相当于 TF 中的 torch.nn.Parameter()?
- python - TypeError: 不支持的操作数类型 -: 'float' 和 'str'
- python - Pandas 数据透视表多层排序