判斷步驟:1、用“new Set(數組)”語句將兩個數組都轉換為set集合類型;2、用“new Set([…集合1].filter(x => 集合2.has(x)))”語句獲取兩個集合的交集,會返回一個包含全部交集元素的新集合;3、用“Array.from(交集集合)”語句將集合轉為數組類型;4、用“交集數組==[]”語句判斷交集數組是否為空數組,若是則兩個數組沒重復元素。
前端(vue)入門到精通課程:進入學習
本教程操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
判斷兩個數組是否有重復的元素,換個說法,就是判斷兩個數組是否有交集。
在javascript中,可以利用set對象的has()方法配合數組的filter()來進行判斷。
實現步驟:
步驟1:將兩個數組都轉換為set集合類型
let a=[1, 2, 3]; let b=[3, 5, 2]; newA = new Set(a); newB = new Set(b);
步驟2:利用has()和filter()函數獲取兩個集合的交集
let a=[1, 2, 3]; let b=[3, 5, 2]; newA = new Set(a); newB = new Set(b); let intersectionSet = new Set([...newA].filter(x => newB.has(x))); console.log(intersectionSet);
可以看出此時,交集元素被包含在一個set集合中返回。
步驟3:利用Array.from方法將集合轉為數組類型
Array.from方法用于將兩類對象轉為真正的數組:類似數組的對象(array-like object)和可遍歷(iterable)的對象(包括 ES6 新增的數據結構 Set 和 Map)。
let a=[1, 2, 3]; let b=[3, 5, 2]; newA = new Set(a); newB = new Set(b); let intersectionSet = new Set([...newA].filter(x => newB.has(x))); console.log(intersectionSet); let arr = Array.from(intersectionSet); console.log(arr);
步驟4:判斷交集數組是否為空數組
-
是空數組,則兩個數組沒有重復元素
-
不是空數組,則兩個數組有重復元素
if(arr==[]){ console.log("兩個數組沒有重復元素"); }else{ console.log("兩個數組有重復元素"); }
(學習視頻分享:web前端)