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>

Другие вопросы по тегам