Что является наиболее эффективным методом инверсии loda sh _.intersection () - PullRequest
0 голосов
/ 31 марта 2020

Используя loda sh, я хочу найти все элементы между двумя массивами, которые различны, в основном противоположны или обратны _. Intersection [with | by] . Конечно, я рассмотрел _. Разность [с | на] , но это не обратная версия _.intersection, поскольку он сравнивает только первый массив со вторым, а не сравнивает их друг с другом. Самое близкое, что я смог получить, - это очень громоздко, что побудило меня спросить здесь, не хватает ли мне более эффективного и / или элегантного варианта. Меня интересуют только решения на основе loda sh.

Вот самое близкое, что я могу придумать, чтобы получить уникальный массив значений, которые различны для обоих массивов. Меня интересуют значения со свойствами id, которые отсутствуют как в массивах, так и в значениях с совпадающими свойствами id, но отличаются v свойствами.

const n = [{id: 0, v: 9.7}, {id: 1, v: 1.7}, {id: 3, v: 2.6}, {id: 4, v: 1.89}]
const o = [{id: 1, v: 1.7}, {id: 3, v: 3.6}, {id: 7, v: 0.89}, {id: 4, v: 1.89}]

_.uniqBy(_.concat(
    _.differenceWith(n, o, _.isEqual), _.differenceWith(o, n, _.isEqual)), 'id')

Этот код выдаст:

[{id: 0, v: 9.7}, {id: 3, v: 2.6}, {id: 7, v: 0.89}]
...