Lodash находит разницу между массивами JSON
Использование lodash для нахождения разницы:
c1Arr это:
[ { varName: 'city', varValue: 'cccccccc' },
{ varName: 'country', varValue: 'dddddddd' }
]
c2Arr это:
[ { varName: 'abc', varValue: 'aaa' },
{ varName: 'city', varValue: 'cccccccc' },
{ varName: 'country', varValue: 'dddddddd' }
]
Выполнение следующего кода
var dArr = _.difference(c2Arr, c1Arr);
console.log(dArr);
Почему я не получаю результат:
[ { varName: 'abc', varValue: 'aaa' }]
Вместо этого я получаю (т.е. c2Arr)
[ { varName: 'abc', varValue: 'aaa' },
{ varName: 'city', varValue: 'cccccccc' },
{ varName: 'country', varValue: 'dddddddd' }
]
1 ответ
Решение
Вы должны предоставить comparator
функция, так как элементы являются объектом.
Попробуй это,
_.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>