Reputation: 139
Using lodash for finding difference:
c1Arr is:
[ { varName: 'city', varValue: 'cccccccc' },
{ varName: 'country', varValue: 'dddddddd' }
]
c2Arr is:
[ { varName: 'abc', varValue: 'aaa' },
{ varName: 'city', varValue: 'cccccccc' },
{ varName: 'country', varValue: 'dddddddd' }
]
Executing the following code
var dArr = _.difference(c2Arr, c1Arr);
console.log(dArr);
Why don't I get the result :
[ { varName: 'abc', varValue: 'aaa' }]
Instead I get (i.e. c2Arr)
[ { varName: 'abc', varValue: 'aaa' },
{ varName: 'city', varValue: 'cccccccc' },
{ varName: 'country', varValue: 'dddddddd' }
]
Upvotes: 0
Views: 1500
Reputation: 3213
You have to provide the comparator
function, since the elements are object.
Try this,
_.differenceWith(c2Arr, c1Arr, _.isEqual);
var c1Arr = [{
varName: 'city',
varValue: 'cccccccc'
}, {
varName: 'country',
varValue: 'dddddddd'
}]
var c2Arr = [{
varName: 'abc',
varValue: 'aaa'
}, {
varName: 'city',
varValue: 'cccccccc'
}, {
varName: 'country',
varValue: 'dddddddd'
}]
var dArr = _.differenceWith(c2Arr, c1Arr, _.isEqual);
console.log(dArr);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>
Upvotes: 2