js 获取两个数组的交集,并集,补集,差集(转载+收藏)
发现一个挺好用的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 获取两个数组的交集,并集,补集,差集(转载+收藏)相关推荐
- 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 ...
- js获取两个数组不同的元素并返回不同元素组成的数组,并对不同的元素添加一个新的属性
// *********************************************** // A数组1 // B 数组2 // 用A来遍历,用B来查找 // 返回的数组result co ...
- LeetCode 350. 两个数组的交集 II
350. 两个数组的交集 II 难度简单640收藏分享切换为英文接收动态反馈 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集.返回结果中每个元素出现的次数,应与元素在两 ...
- Java求两个数组的交集、差集、并集
目录 Java求两个数组的并集,代码如下: Java求两个数组的交集,代码如下: Java求两个数组的差集,代码如下: 交集.差集.并集测试代码如下: Java求两个数组的并集,代码如下: /*** ...
- python两个list取交集_使用 Python 获取两个列表的交集、并集、差集的常用方法 | Jin''''s Blog...
在数据处理中经常需要使用 Python 来获取两个列表的交集,并集和差集.在 Python 中实现的方法有很多,我平时只使用一两种我所熟悉的,但效率不一定最高,也不一定最优美,所以这次想把常用的方法都 ...
- 【mysql】mysql获取两个集合的交集/差集/并集
mysql的常见场景,获取两个数据集的交集和差集 步骤 两个集合的结构要一致,对应的字段数,字段类型 将两个集合用 UNION ALL 关键字合并,这里的结果是有重复的所有集 将上面的所有集 GROU ...
- Leetcode DAY6: 有效的字母异位词 and 两个数组的交集 and 快乐数 and 两数之和
242.有效的字母异位词 class Solution:def isAnagram(self, s: str, t: str) -> bool:map=[0] * 26for ss in s:m ...
- java调用方法返回数组_JAVA使用下面的方法头编写方法,返回两个数组列表的并集...
importjava.util.Set;importjava.util.List;importjava.util.HashSet;importjava.util.TreeSet;importjava. ...
- Leetcode-数据结构-350. 两个数组的交集 II
问题 给两个整数数组 nums1 和 nums2 ,请以 数组形式 返回两数组的 交集 (其在交集中出现的次数:等于该数字在两个数组中出现次数的最小值). 返回结果中 每个元素出现的次数(for遍历) ...
- matlab合并有序数组,《数组合并》JS合并两个数组的3种方法详解
这篇文章主要介绍了JS合并两个数组的3种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一个包解决你所有的JS问题,点击获取 需要将两个数组 ...
最新文章
- 车模厂商能否用点心?
- 读《不要等到毕业以后》有感①
- 万字长文让你看够幂级数
- 模板—主席树(待修改)
- 【Android UI设计与开发】第16期:滑动菜单栏(一)
- GetLastError()和FormatMessage()
- 收藏 | 李飞飞经典CS231N《卷积神经网络视觉识别》第十一讲!
- 一种本地和云端相结合的语音识别系统及方法与流程
- Atiitt 自我学习法流程 1.预先阶段 1.1.目标搜索 资料搜索 1.2. 1.3.通过关联关键词 抽象 等领域 拓展拓宽体系树 1.4. 2.分析整理阶段 2.1.找出重点 压缩要学会
- CocoaPods 的安装(第三方开源类库)
- 凤凰项目节选内容、记录和重新描述
- 帝国cms html广告,帝国cms加入JS广告代码不显示的解决办法
- 小猫爪:动手笔记01-FreeRTOS移植
- 《黑白团团队》第八次团队作业:Alpha冲刺 第四天
- ShareX加七牛云免费搭建快速博客图床
- 速卖通代运营说:速卖通太难了!2020去做不算晚,但是也绝对不早!
- 室内定位技术将会怎样颠覆传统商业运营?
- css3新动_10款重量级CSS3的全新特效 实现超酷前端动画效果
- Unity性能优化(2)-官方教程Diagnosing performance problems using the Profiler window翻译
- oneNote如何导出学习笔记的各种格式