gpt4 book ai didi

javascript - lodash _.intersection() 最有效的逆是什么

转载 作者:行者123 更新时间:2023-12-05 00:33:13 25 4
gpt4 key购买 nike

使用 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}]

最佳答案

我在寻找同样的东西后发现了这个问题,但我后来意识到,对于我的用例 - 识别不匹配的记录,然后为什么它们不匹配 - 拥有一个列表没有用所有的差异都是这样。

该列表无法告诉我可以使用的任何内容,因此我仍需要进行进一步操作以查看问题所在的数组。

所以对我来说,首先检查是否相等,然后使用 _.difference 更有意义。两次,因为它的结果会产生有用的信息,例如

if (!_.isEqual(a, b) {
const idsFromBThatAreNotInA = _.difference(a, b);
const idsFromAThatAreNotInB = _.difference(b, a);
}

我不知道 OP 的用例是什么,所以我不知道这是否直接相关,但也许它可以帮助其他人。

关于javascript - lodash _.intersection() 最有效的逆是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60943684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com