你真的了解数组吗?(交集差集并集补集在项目中的使用)

Posted 毕竟我是崔战神阿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你真的了解数组吗?(交集差集并集补集在项目中的使用)相关的知识,希望对你有一定的参考价值。

何为交集/差集/并集/补集?

我们项目中大多数是在与数组斗智斗勇,由于之前项目有使用到类似于差集这种思路,便一发不可收拾入了这个坑,在认真思考之后,发现实战项目中很多地方都可以用到这个知识点,于是便写个博客以记录心得感悟


首先要介绍一下何为交集/差集/并集/补集
PS:已经了解的同志们可以从目录直接跳转过去进行阅读

文章目录


一、数组的交集

1.何为数组的交集?

两个集合A和B的交集是含有所有既属于A又属于B的元素,而没有其他元素的集合。 A和B的交集写作"A∩B"。形式上:x属于A∩B当且仅当x属于A且x属于B。
例如:集合[1,2,3]和[2,3,4]的交集为[2,3]。简而言之:两个数组重复的子元素部分为交集。

2.如何用代码实现数组的交集?

直接来最高级的ES6语法

let a = [1,2,3,4,5];
let b = [2,4,6,8,10];
let c = a.filter(x => new Set(b).has(x));
console.log(c);
//输出的结果为[2, 4]

3.实际项目中哪些地方可以使用到此技能?

可以用交集来检测数组之前和之后是否发生了改变,如果改变了再进行接口数据请求
否则就算用户进行操作,因为数据没有发生改变的原因,不进行对应的接口请求(性能优化细节)

二、数组的差集

1.何为数组的差集?

一般地,设A,B是两个集合,由所有属于A且不属于B的元素组成的集合,叫做集合A减集合B(或集合A与集合B之差),类似地,对于集合A. B,我们把集合x/x∈A,且x¢B叫做A与B的差集,记作A-B记作A-B(或A\\B),即A-B=x|x∈A,且x ¢B(或A\\B=x|x∈A,且x ¢B B-A=x/x∈B且x¢A 叫做B与A的差集

2.如何用代码实现数组的差集?

直接来最高级的ES6语法

let a = [1,2,3,4,5];
let b = [2,4,6,8,10];
let c = a.filter(x => !new Set(b).has(x));
console.log(c);
//输出的结果为[1, 3, 5]

3.实际项目中哪些地方可以使用到此技能?

在项目中权限赋予等功能中,admin权限字段子类很多会包含user字段子类等一些权限的字段,这个时候我们便可以利用差集来只添加那些不重复的子集(性能优化细节

三、数组的并集

1.何为数组的并集?

给定两个集合A,B,把他们所有的元素合并在一起组成的集合,叫做集合A与集合B的并集,记作A∪B,读作A并B。

2.如何用代码实现数组的并集?

直接来最高级的ES6语法

let a = [1,2,3,4,5]
let b = [2,4,6,8,10]
let c= Array.from(new Set([...a, ...b]));
console.log(c)
//最终的输出结果为[1, 2, 3, 4, 5, 6, 8, 10]

3.实际项目中哪些地方可以使用到此技能?

并集在数组中的作用其实类似于枚举,把两个数组不重复的属性给枚举出来之后,返回一个新的数组,它在项目中并不经常使用,基本上用来合并一个数据A和数据B所有的子项(不经常使用)
由于有点鸡肋,随便放一张图.

四、数组的补集

1.何为数组的补集?

补集的意思是一般地,设S是一个集合,A是S的一个子集,由S中所有不属于A的元素组成的集合,叫做子集A在S中的绝对补集。在集合论和数学的其他分支中,
存在补集的两种定义:相对补集绝对补集

2.如何用代码实现数组的补集?

直接来最高级的ES6语法

let a = [1,2,3,4,5]
let b = [2,4,6,8,10]
let c = Array.from(new Set([...a, ...b]));
console.log(c)
//最后的数据结果为1, 2, 3, 4, 5, 6, 8, 10]

3.实际项目中哪些地方可以使用到此技能?

简单而言,补集就是两个数组不重复的所有子集给抽离出来,然后融合成一个集合的意思,由于此方法更加鸡肋,便不再上实例说明。
最后放上一张镇楼图

总结

好记性不如烂笔头
随时随地给自己对项目的状态进行实时的记录,想来以后回忆起来也是极美的

明天,又是充满希望的一天!

以上是关于你真的了解数组吗?(交集差集并集补集在项目中的使用)的主要内容,如果未能解决你的问题,请参考以下文章

List交集并集补集差集

Python求两个list的交集并集补集对称差集的两种方法

PHP数组的几个操作,求并集,交集,差集,数组

java 求交集 并集 差集

Hive 差集交集并集

java找到两个list的交集并集差集