Deep Merge using Lodash
You can turn both arrays into objects using _.keyBy(arr, 'label')
, and then merge deep using _.merge()
:
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' }}];var result = _.values(_.merge( _.keyBy(originalAddresses, 'label'), _.keyBy(updatedAddresses, 'label')));console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script>