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