何為交集/差集/并集/補集?
我們專案中大多數是在與陣列斗智斗勇,由于之前專案有使用到類似于差集這種思路,便一發不可收拾入了這個坑,在認真思考之后,發現實戰專案中很多地方都可以用到這個知識點,于是便寫個博客以記錄心得感悟
首先要介紹一下何為交集/差集/并集/補集
PS:已經了解的同志們可以從目錄直接跳轉過去進行閱讀
文章目錄
- 何為交集/差集/并集/補集?
- 一、陣列的交集
- 1.何為陣列的交集?
- 2.如何用代碼實作陣列的交集?
- 3.實際專案中哪些地方可以使用到此技能?
- 二、陣列的差集
- 1.何為陣列的差集?
- 2.如何用代碼實作陣列的差集?
- 3.實際專案中哪些地方可以使用到此技能?
- 三、陣列的并集
- 1.何為陣列的并集?
- 2.如何用代碼實作陣列的并集?
- 3.實際專案中哪些地方可以使用到此技能?
- 四、陣列的補集
- 1.何為陣列的補集?
- 2.如何用代碼實作陣列的補集?
- 3.實際專案中哪些地方可以使用到此技能?
- 總結
- 明天,又是充滿希望的一天!
一、陣列的交集
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, 3, 5, 6, 8, 10]
3.實際專案中哪些地方可以使用到此技能?
簡單而言,補集就是兩個陣列不重復的所有子集給抽離出來,然后融合成一個集合的意思,由于此方法更加雞肋,便不再上實體說明,
最后放上一張鎮樓圖

總結
好記性不如爛筆頭
隨時隨地給自己對專案的狀態進行實時的記錄,想來以后回憶起來也是極美的
明天,又是充滿希望的一天!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/276630.html
標籤:python
上一篇:Python常用模塊7-Python的random模塊簡介
下一篇:檔案描述符與檔案流指標以及重定向
