发现一个挺好用的js 获取两个数组的交集,并集,补集,差集的文章,收藏起来方便以后查阅

一、简单数组
1、ES5:

const arr1 = [1,2,3,4,5],arr2 = [5,6,7,8,9];// 交集
let intersection = arr1.filter(function (val) { return arr2.indexOf(val) > -1 })// 并集
let union = arr1.concat(arr2.filter(function (val) { return !(arr1.indexOf(val) > -1) }))// 补集 两个数组各自没有的集合
let complement = arr1.filter(function (val) { return !(arr2.indexOf(val) > -1) })
.concat(arr2.filter(function (val) { return !(arr1.indexOf(val) > -1) }))// 差集 数组arr1相对于arr2所没有的
let diff = arr1.filter(function (val) { return arr2.indexOf(val) === -1 })console.log('arr1: ', arr1);
console.log('arr2: ', arr2);
console.log('交集', intersection);
console.log('并集', union);
console.log('补集', complement);
console.log('差集', diff);

ES6:

const arr1 = [1,2,3,4,5],arr2 = [5,6,7,8,9],_arr1Set = new Set(arr1),_arr2Set = new Set(arr2);// 交集
let intersection = arr1.filter(item => _arr2Set.has(item))// 并集
let union = Array.from(new Set([...arr1, ...arr2]))// 补集 两个数组各自没有的集合
let complement = [...arr1.filter(item => !_arr2Set.has(item)), ...arr2.filter(item => !_arr1Set.has(item))]// 差集 数组arr1相对于arr2所没有的
let diff = arr1.filter(item => !_arr2Set.has(item))
console.log('arr1: ', arr1);
console.log('arr2: ', arr2);
console.log('交集', intersection);
console.log('并集', union);
console.log('补集', complement);
console.log('差集', diff);


JQuery:

const arr1 = [1,2,3,4,5],arr2 = [5,6,7,8,9];// 交集
let intersection = $(arr1).filter(arr2).toArray();// 并集
let union = $.unique(arr1.concat(arr2))// 补集 两个数组各自没有的集合
let complement = $(arr1).not(arr2).toArray().concat($(arr2).not(arr1).toArray())// 差集 数组arr1相对于arr2所没有的
let diff = $(arr1).not(arr2).toArray()
console.log('arr1: ', arr1);
console.log('arr2: ', arr2);
console.log('交集', intersection);
console.log('并集', union);
console.log('补集', complement);
console.log('差集', diff);

二、对象数组

// 形如如下数组
let arr1 = [], arr2 = [];
arr1 = [{ID: 1,Name: 1,desc: 'Number'},{ID: 2,Name: 2,desc: 'Number'},{ID: 3,Name: 3,desc: 'Number'},{ID: 4,Name: 4,desc: 'Number'},{ID: 5,Name: 5,desc: 'Number'}
]
arr2 = [
{ID: 5,Name: 5,desc: 'Number'},{ID: 6,Name: 6,desc: 'Number'},{ID: 7,Name: 7,desc: 'Number'},{ID: 8,Name: 8,desc: 'Number'},{ID: 9,Name: 9,desc: 'Number'}
]
// 交集
let intersection = []
for (let i = 0, len = arr1.length; i < len; i++) {for (let j = 0, length = arr2.length; j < length; j++) {if (arr1[i].ID === arr2[j].ID) {intersection.push(arr1[i])}}
}
console.log('交集', intersection)// 并集
let union = [...arr1, ...arr2]
for (let i = 0, len = arr1.length; i < len; i++ ) {for (let j = 0, length = arr2.length; j < length; j++) {if (arr1[i].ID === arr2[j].ID) {union.splice(union.findIndex(item => item.ID === arr1[i].ID), 1)}}
}
console.log('并集', union)// 补集
let complement = [...arr1, ...arr2]
for (let i = 0, len = arr1.length; i < len; i++ ) {for (let j = 0, length = arr2.length; j < length; j++) {if (arr1[i].ID === arr2[j].ID) {complement.splice(complement.findIndex(item => item.ID === arr1[i].ID), 1)complement.splice(complement.findIndex(item => item.ID === arr2[j].ID), 1)}}
}
console.log('补集', complement)// 差集
let diff = [...arr1]
for (let i = 0, len = arr1.length; i < len; i++ ) {let flag = falsefor (let j = 0, length = arr2.length; j < length; j++) {if (arr1[i].ID === arr2[j].ID) {flag = true}}if (flag) {diff.splice(diff.findIndex(item => item.ID === arr1[i].ID), 1)}
}
console.log('差集', diff)

原文链接:https://blog.csdn.net/piaojiancong/article/details/98199541

js 获取两个数组的交集,并集,补集,差集(转载+收藏)相关推荐

  1. js寻找两个数组的差集_js求两个数组的交集|并集|差集|去重

    let a = [1,2,3], b= [2, 4, 5]; 1.差集 (a-b 差集:属于a但不属于b的集合)  a-b = [1,3] (b-a 差集:属于b但不属于a的集合)  b-a = [4 ...

  2. js获取两个数组不同的元素并返回不同元素组成的数组,并对不同的元素添加一个新的属性

    // *********************************************** // A数组1 // B 数组2 // 用A来遍历,用B来查找 // 返回的数组result co ...

  3. LeetCode 350. 两个数组的交集 II

    350. 两个数组的交集 II 难度简单640收藏分享切换为英文接收动态反馈 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集.返回结果中每个元素出现的次数,应与元素在两 ...

  4. Java求两个数组的交集、差集、并集

    目录 Java求两个数组的并集,代码如下: Java求两个数组的交集,代码如下: Java求两个数组的差集,代码如下: 交集.差集.并集测试代码如下: Java求两个数组的并集,代码如下: /*** ...

  5. python两个list取交集_使用 Python 获取两个列表的交集、并集、差集的常用方法 | Jin''''s Blog...

    在数据处理中经常需要使用 Python 来获取两个列表的交集,并集和差集.在 Python 中实现的方法有很多,我平时只使用一两种我所熟悉的,但效率不一定最高,也不一定最优美,所以这次想把常用的方法都 ...

  6. 【mysql】mysql获取两个集合的交集/差集/并集

    mysql的常见场景,获取两个数据集的交集和差集 步骤 两个集合的结构要一致,对应的字段数,字段类型 将两个集合用 UNION ALL 关键字合并,这里的结果是有重复的所有集 将上面的所有集 GROU ...

  7. Leetcode DAY6: 有效的字母异位词 and 两个数组的交集 and 快乐数 and 两数之和

    242.有效的字母异位词 class Solution:def isAnagram(self, s: str, t: str) -> bool:map=[0] * 26for ss in s:m ...

  8. java调用方法返回数组_JAVA使用下面的方法头编写方法,返回两个数组列表的并集...

    importjava.util.Set;importjava.util.List;importjava.util.HashSet;importjava.util.TreeSet;importjava. ...

  9. Leetcode-数据结构-350. 两个数组的交集 II

    问题 给两个整数数组 nums1 和 nums2 ,请以 数组形式 返回两数组的 交集 (其在交集中出现的次数:等于该数字在两个数组中出现次数的最小值). 返回结果中 每个元素出现的次数(for遍历) ...

  10. matlab合并有序数组,《数组合并》JS合并两个数组的3种方法详解

    这篇文章主要介绍了JS合并两个数组的3种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一个包解决你所有的JS问题,点击获取 需要将两个数组 ...

最新文章

  1. 车模厂商能否用点心?
  2. 读《不要等到毕业以后》有感①
  3. 万字长文让你看够幂级数
  4. 模板—主席树(待修改)
  5. 【Android UI设计与开发】第16期:滑动菜单栏(一)
  6. GetLastError()和FormatMessage()
  7. 收藏 | 李飞飞经典CS231N《卷积神经网络视觉识别》第十一讲!
  8. 一种本地和云端相结合的语音识别系统及方法与流程
  9. Atiitt 自我学习法流程 1.预先阶段 1.1.目标搜索 资料搜索 1.2. 1.3.通过关联关键词 抽象 等领域 拓展拓宽体系树 1.4. 2.分析整理阶段 2.1.找出重点 压缩要学会
  10. CocoaPods 的安装(第三方开源类库)
  11. 凤凰项目节选内容、记录和重新描述
  12. 帝国cms html广告,帝国cms加入JS广告代码不显示的解决办法
  13. 小猫爪:动手笔记01-FreeRTOS移植
  14. 《黑白团团队》第八次团队作业:Alpha冲刺 第四天
  15. ShareX加七牛云免费搭建快速博客图床
  16. 速卖通代运营说:速卖通太难了!2020去做不算晚,但是也绝对不早!
  17. 室内定位技术将会怎样颠覆传统商业运营?
  18. css3新动_10款重量级CSS3的全新特效 实现超酷前端动画效果
  19. Unity性能优化(2)-官方教程Diagnosing performance problems using the Profiler window翻译
  20. oneNote如何导出学习笔记的各种格式

热门文章

  1. Instrument详解
  2. 刨根究底字符编码之零——前言
  3. Python 教程推荐
  4. ttl转rs232发送十六进制_浅析 UART、RS232、TTL 之间的关系(转)
  5. 自动化测试框架[Cypress概述]
  6. LM4890功放电路的分析
  7. 高数 | 反函数常见问题解决思路
  8. DNK基础之静态库、动态库、编译流程
  9. android l usb调试,你居然还不会手机usb调试?5个方法,让你轻松学会设置!
  10. 我的Foobar2000定制版本