這篇文章主要為大家展示了如何使用es6數(shù)組includes(),內(nèi)容簡而易懂,希望大家可以學(xué)習(xí)一下,學(xué)習(xí)完之后肯定會(huì)有收獲的,下面讓小編帶大家一起來看看吧。
創(chuàng)新互聯(lián)公司是專業(yè)的范縣網(wǎng)站建設(shè)公司,范縣接單;提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行范縣網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
Array.prototype.includes方法返回一個(gè)布爾值,表示某個(gè)數(shù)組是否包含給定的值,與字符串的includes方法類似。ES2016引入了該方法。
[1, 2, 3].includes(2) // true [1, 2, 3].includes(4) // true [1, 2, NaN].includes(NaN) // true
該方法的第二個(gè)參數(shù)表示搜索的起始位置,默認(rèn)為0。如果第二個(gè)參數(shù)為負(fù)數(shù),則表示倒數(shù)的位置,如果這時(shí)它大于數(shù)組長度(比如第二個(gè)參數(shù)為-4, 但數(shù)組長度為3),則會(huì)重置為0開始。
[1, 2, 3].includes(3, 3); // false [1, 2, 3].includes(3, -1); // true
沒有該方法之前,我們通常使用數(shù)組的indexOf方法,檢查是否包含某個(gè)值。
if (arr.indexOf(el) !== -1) { // ... }
indexOf方法有兩個(gè)缺點(diǎn),一是不夠語義化,它的含義是找到參數(shù)值的第一個(gè)出現(xiàn)位置,所以要去比較是否不等于-1,表達(dá)起來不夠直觀。二是,它內(nèi)部使用嚴(yán)格相等運(yùn)算符進(jìn)行判斷,這會(huì)導(dǎo)致對(duì)NaN的誤判。
[NaN].indexOf(NaN) // -1
includes使用的是不一樣的判斷算法,就沒有這個(gè)問題。
[NaN].includes(NaN) // true
下面代碼用來檢查當(dāng)前環(huán)境是否支持該方法,如果不支持,部署一個(gè)簡易的替代版本。
const contains = (() => Array.prototype.includes ? (arr, value) => arr.includes(value) :(arr, value) => arr.some(el => el === value) )()
另外,Map和Set數(shù)據(jù)結(jié)構(gòu)有一個(gè)has方法需要注意與includes區(qū)分。
-Map結(jié)構(gòu)的has方法,是用來查找鍵名的,比如Map.prototype.has(key),
WeakMap.prototype.has(key), Reflect.has(target, propertyKey)
-Set結(jié)構(gòu)的has方法,是用來查找值的,比如Set.prototype.has(value),
WeakSet.prototype.has(value)
以上就是關(guān)于如何使用es6數(shù)組includes()的內(nèi)容,如果你們有學(xué)習(xí)到知識(shí)或者技能,可以把它分享出去讓更多的人看到。