【发布时间】:2020-07-11 14:19:56
【问题描述】:
使用lodash,我想找到两个不同数组之间的所有元素,基本上与_.intersection[with|by]相反或相反。当然,我查看了_.difference[with|by],但它不是 _.intersection 的逆版本,因为它仅将第一个数组与第二个数组进行比较,而不是将它们相互比较。我能得到的最接近的是非常笨拙的,这促使我在这里问我是否错过了更有效和/或更优雅的选择。我只对基于 lodash 的解决方案感兴趣。
这是我能想出的最接近的方法,以获得两个数组之间不同的唯一值数组。我对具有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}]
【问题讨论】:
-
您是如何决定在这两个
{id: 3, v: 3.6}和{id: 3, v: 2.6}之间保留的? -
@CaptainMhmdrz_A
v属性不同 -
我的意思是你是如何决定在输出中保留
2.6而不是3.6 -
啊,我明白了。其实我不在乎,我只对它们不同的事实感兴趣。
-
是冠状病毒导致缺乏活动还是我的问题很无聊或无关紧要?
标签: javascript lodash