我有两个对象数组,它们包含带有标签和实际地址的地址:
var originalAddresses = [
{
label: 'home',
address: { city: 'London', zipCode: '12345' }
},
{
label: 'work',
address: { city: 'New York', zipCode: '54321' }
}
];
var updatedAddresses = [
{
label: 'home',
address: { city: 'London (Central)', country: 'UK' }
},
{
label: 'spain',
address: { city: 'Madrid', zipCode: '55555' }
}
];
现在我想按 label
合并这些数组,并比较地址的各个属性,只合并新地址中实际存在的属性。因此,结果应该像这样:
var result = [
{
label: 'home',
address: { city: 'London (Central)', zipCode: '12345', country: 'UK' }
},
{
label: 'work',
address: { city: 'New York', zipCode: '54321' }
},
{
label: 'spain',
address: { city: 'Madrid', zipCode: '55555' }
}
]
如何使用 lodash 实现此操作? 我尝试了unionBy()
和merge()
的组合。使用 unionBy() 函数,我可以按标签比较和合并数组,但这总是替换整个对象。虽然可以合并地址,但是这不是以标签为基础进行的。