Lodash / javascript:比较两个集合并返回差异[重复]
Posted
技术标签:
【中文标题】Lodash / javascript:比较两个集合并返回差异[重复]【英文标题】:Lodash / javascript : Compare two collections and return the differences [duplicate] 【发布时间】:2017-04-01 01:37:20 【问题描述】:我有两个对象数组:
我的表格的元素不是原始值,而是复杂的对象。
array1 = [obj1,obj2,obj3,obj4]
array2 = [obj5,obj5,obj6,obj7]
我想比较两个数组,看看array2的元素是否已经存在于array1中,然后创建一个不同的新数组。
有什么建议吗?
【问题讨论】:
是的,_.difference
所以这被 6 个人标记为重复?那 6 个人知道基元数组和复杂对象数组的区别吗?
我认为 lodash _.differenceBy(lodash.com/docs/4.17.15#differenceBy) 会有所帮助。
【参考方案1】:
ES6这就够了:
array2.filter(e => !array1.includes(e));
没有包含
array2.filter(e=> array1.indexOf(e) < 0);
Plunker给你
【讨论】:
无法使用您的解决方案,因为我正在使用带有 typescript 的 angular 2,包括返回错误 这还不够。您在 plunkr 中使用原始值,OP 不是【参考方案2】:var presents = _.intersectionWith(array1, array2, _.isEqual);
var dif = _.differenceWith(array1, array2, _.isEqual);
_.differenceWith 仅从 4.0.0 lodash 版本开始可用
【讨论】:
_.differenceWith 仅从 4.0.0 lodash 版本开始可用 你看到他问过 :::: 对象数组array1 = [obj1,obj2,obj3,obj4] array2 = [obj5,obj5,obj6,obj7]【参考方案3】:_.difference 只为您提供第一个数组中的元素,而不是第二个数组中的元素,而不是数组 2 中不在数组 1 中的元素。
这是你想要达到的目标吗?
【讨论】:
是的,这就是我想要实现的目标,但是当我在两个数组相同的情况下使用 _difference 时,我将 array1 作为输出!正常吗? no... 应该发送给您 [] (我现在已经在 lodash 文档中的 chrome 控制台上对其进行了测试...)。你使用的是 nodejs 还是网络浏览器? 是的,它终于可以正常工作了,这是我犯的错误。谢谢你的帮助以上是关于Lodash / javascript:比较两个集合并返回差异[重复]的主要内容,如果未能解决你的问题,请参考以下文章