步驟:1、將兩個(gè)數(shù)組分別轉(zhuǎn)為set類(lèi)型,語(yǔ)法“newA=new Set(a);newB=new Set(b);”;2、利用has()和filter()求差集,語(yǔ)法“new Set([...newA].filter(x =>!newB.has(x)))”,差集元素會(huì)被包含在一個(gè)set集合中返回;3、利用Array.from將集合轉(zhuǎn)為數(shù)組類(lèi)型,語(yǔ)法“Array.from(集合)”。
本教程操作環(huán)境:windows7系統(tǒng)、ECMAScript 6版、Dell G3電腦。
找出2個(gè)數(shù)組中不同項(xiàng),就是獲取兩個(gè)數(shù)組的差集。
在es6中,可以借助set對(duì)象的has()方法來(lái)求兩個(gè)數(shù)組的差集。
實(shí)現(xiàn)步驟:
步驟1、將兩個(gè)數(shù)組分別轉(zhuǎn)為set類(lèi)型
let a=[1, 2, 3]; let b=[3, 5, 2]; newA = new Set(a); newB = new Set(b);
步驟2:求差集
利用set對(duì)象的has() 方法配合數(shù)組的filter()來(lái)求兩個(gè)數(shù)組的差集。
Set has() 方法指示 Set 對(duì)象是否包含指定的值;如果指定的值存在,則返回真,否則返回假。
而filter()方法用于過(guò)濾數(shù)組,返回符合條件(為真)的元素。
實(shí)現(xiàn)代碼
let a=[1, 2, 3]; let b=[3, 5, 2]; newA = new Set(a); newB = new Set(b); console.log(newA); console.log(newB); let differenceABSet = new Set([...newA].filter(x => !newB.has(x))); console.log("差集為:"); console.log(differenceABSet);
可以看出此時(shí),差集元素被包含在一個(gè)set集合中返回,我們可以將其轉(zhuǎn)為數(shù)組類(lèi)型。
步驟3:利用Array.from方法將集合轉(zhuǎn)為數(shù)組類(lèi)型
let a=[1, 2, 3]; let b=[3, 5, 2]; newA = new Set(a); newB = new Set(b); console.log(newA); console.log(newB); let differenceABSet = Array.from(new Set([...newA].filter(x => !newB.has(x)))); console.log("差集為:"); console.log(differenceABSet);
說(shuō)明:Array.from方法用于將兩類(lèi)對(duì)象轉(zhuǎn)為真正的數(shù)組:類(lèi)似數(shù)組的對(duì)象(array-like object)和可遍歷(iterable)的對(duì)象(包括 ES6 新增的數(shù)據(jù)結(jié)構(gòu) Set 和 Map)。
擴(kuò)展知識(shí):求并集/交集
let a = new Set([1, 2, 3]); let b = new Set([3, 5, 2]); // 并集 let unionSet = new Set([...a, ...b]); //[1,2,3,5] // ab交集 let intersectionSet = new Set([...a].filter(x => b.has(x)));
【相關(guān)推薦:javascript視頻教程、web前端】
以上是es6怎么找出2個(gè)數(shù)組中不同項(xiàng)的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門(mén)文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版
神級(jí)代碼編輯軟件(SublimeText3)

在ES6中,可以利用數(shù)組對(duì)象的reverse()方法來(lái)實(shí)現(xiàn)數(shù)組反轉(zhuǎn),該方法用于顛倒數(shù)組中元素的順序,將最后一個(gè)元素放在第一位,而第一個(gè)元素放在最后,語(yǔ)法“array.reverse()”。reverse()方法會(huì)修改原始數(shù)組,如果不想修改需要配合擴(kuò)展運(yùn)算符“...”使用,語(yǔ)法“[...array].reverse()”。

async是es7的。async和await是ES7中新增內(nèi)容,是對(duì)于異步操作的解決方案;async/await可以說(shuō)是co模塊和生成器函數(shù)的語(yǔ)法糖,用更加清晰的語(yǔ)義解決js異步代碼。async顧名思義是“異步”的意思,async用于聲明一個(gè)函數(shù)是異步的;async和await有一個(gè)嚴(yán)格規(guī)定,兩者都離不開(kāi)對(duì)方,且await只能寫(xiě)在async函數(shù)中。

為了瀏覽器兼容。ES6作為JS的新規(guī)范,加入了很多新的語(yǔ)法和API,但現(xiàn)代瀏覽器對(duì)ES6新特性支持度不高,所以需將ES6代碼轉(zhuǎn)為ES5代碼。在微信web開(kāi)發(fā)者工具中,會(huì)默認(rèn)使用babel將開(kāi)發(fā)者ES6語(yǔ)法代碼轉(zhuǎn)換為三端都能很好支持的ES5的代碼,幫助開(kāi)發(fā)者解決環(huán)境不同所帶來(lái)的開(kāi)發(fā)問(wèn)題;只需要在項(xiàng)目中配置勾選好“ES6轉(zhuǎn)ES5”選項(xiàng)即可。

步驟:1、將兩個(gè)數(shù)組分別轉(zhuǎn)為set類(lèi)型,語(yǔ)法“newA=new Set(a);newB=new Set(b);”;2、利用has()和filter()求差集,語(yǔ)法“new Set([...newA].filter(x =>!newB.has(x)))”,差集元素會(huì)被包含在一個(gè)set集合中返回;3、利用Array.from將集合轉(zhuǎn)為數(shù)組類(lèi)型,語(yǔ)法“Array.from(集合)”。

es5中可以利用for語(yǔ)句和indexOf()函數(shù)來(lái)實(shí)現(xiàn)數(shù)組去重,語(yǔ)法“for(i=0;i

在es6中,暫時(shí)性死區(qū)是一個(gè)語(yǔ)法錯(cuò)誤,是指let和const命令使區(qū)塊形成封閉的作用域。在代碼塊內(nèi),使用let/const命令聲明變量之前,該變量都是不可用的,在變量聲明之前屬于該變量的“死區(qū)”;這在語(yǔ)法上,稱(chēng)為“暫時(shí)性死區(qū)”。ES6規(guī)定暫時(shí)性死區(qū)和let、const語(yǔ)句不出現(xiàn)變量提升,主要是為了減少運(yùn)行時(shí)錯(cuò)誤,防止在變量聲明前就使用這個(gè)變量,從而導(dǎo)致意料之外的行為。

在es6中,可以利用array對(duì)象的length屬性來(lái)判斷數(shù)組里總共有多少項(xiàng),即獲取數(shù)組中元素的個(gè)數(shù);該屬性可返回?cái)?shù)組中元素的數(shù)目,只需要使用“array.length”語(yǔ)句即可返回表示數(shù)組對(duì)象的元素個(gè)數(shù)的數(shù)值,也就是長(zhǎng)度值。

ES6 import會(huì)產(chǎn)生變量提升的現(xiàn)象。變量提升是將變量聲明提升到它所在作用域的最開(kāi)始的部分。js要經(jīng)歷編譯跟執(zhí)行階段,在編譯階段的時(shí)候,會(huì)搜集所有的變量聲明并且提前聲明變量,而其他的語(yǔ)句都不會(huì)改變他們的順序,因此,在編譯階段的時(shí)候,第一步就已經(jīng)執(zhí)行了,而第二部則是在執(zhí)行階段執(zhí)行到該語(yǔ)句的時(shí)候才執(zhí)行。
