檢測(cè)步驟:1、將兩個(gè)數(shù)組都轉(zhuǎn)換為set集合類型,語法“new Set(數(shù)組)”;2、獲取兩個(gè)集合的交集,語法“new Set([…集合1].filter(x=>集合2.has(x)))”,交集元素會(huì)被包含在一個(gè)set集合中返回;3、將包含交集元素的set集合轉(zhuǎn)為數(shù)組類型,語法“Array.from(集合)”;4、判斷交集數(shù)組是否為空數(shù)組,如果是則沒有相同項(xiàng),反之則有相同項(xiàng)。
前端(vue)入門到精通課程:進(jìn)入學(xué)習(xí)
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調(diào)試工具:點(diǎn)擊使用
本教程操作環(huán)境:windows7系統(tǒng)、ECMAScript 6版、Dell G3電腦。
檢測(cè)兩個(gè)數(shù)組是否有相同項(xiàng),就是檢測(cè)兩個(gè)數(shù)組是否有交集。
檢測(cè)思想:
-
獲取兩個(gè)數(shù)組的交集
-
判斷該交集是否為空,如果為空則沒有相同項(xiàng),如果不為空則有相同項(xiàng)。
實(shí)現(xiàn)步驟:
1、獲取兩個(gè)數(shù)組的交集
在es6中,可以利用set對(duì)象的has() 方法配合數(shù)組的filter()來求兩個(gè)數(shù)組的交集。
-
Set是ES6新提供的數(shù)據(jù)結(jié)構(gòu),類似于數(shù)組,但是本身沒有重復(fù)值。利用這一特性,我們可以將數(shù)組轉(zhuǎn)為Set類型進(jìn)行去重,然后使用Array.from方法將其再轉(zhuǎn)為數(shù)組。
-
Set has() 方法指示 Set 對(duì)象是否包含指定的值。如果指定的值存在,則返回真,否則返回假。
注:想要使用has()方法,需要先將數(shù)組轉(zhuǎn)為set集合類型
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集合中返回
2、將包含交集元素的set集合轉(zhuǎn)為數(shù)組類型
在es6中,可以利用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 intersectionSet = Array.from(new Set([...newA].filter(x => newB.has(x)))); console.log(intersectionSet);
3、判斷交集數(shù)組是否為空數(shù)組
-
如果為空數(shù)組,則沒有相同項(xiàng)
-
如果不為空數(shù)組,則有相同項(xiàng)
if(intersectionSet==[]){ console.log("沒有相同項(xiàng)"); }else{ console.log("有相同項(xiàng)"); }
【