【发布时间】:2017-01-07 20:05:23
【问题描述】:
我有两个对象数组,其中包含具有标签的地址和实际地址的对象:
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() 我可以按标签比较和连接数组,但这总是会替换整个对象。我可以确定合并地址,但这不会按标签发生。
【问题讨论】:
标签: javascript arrays merge lodash