ES6之Array.includes()函式

居老師的狗子發表於2019-03-18

一、定義

includes() 方法用來判斷一個陣列是否包含一個指定的值,如果是返回 true,否則false。

二、語法

 

arr.includes(searchElement)
arr.includes(searchElement, fromIndex)
//searchElement:必須。需要查詢的元素值。
//fromIndex:可選。從該索引處開始查詢 searchElement。如果為負值,則按升序從 array.length + fromIndex 的索引開始搜尋。預設為 0。

三、其他

如果fromIndex 大於等於陣列長度 ,則返回 false 。該陣列不會被搜尋:

var arr = ['a', 'b', 'c']; 
arr.includes('c', 3);   //false
arr.includes('c', 100); // false

如果 fromIndex 為負值,計算出的索引將作為開始搜尋searchElement的位置。如果計算出的索引小於 0,則整個陣列都會被搜尋。

// 陣列長度是3
// fromIndex 是 -100
// computed index 是 3 + (-100) = -97
 
var arr = ['a', 'b', 'c'];
 
arr.includes('a', -100); // true
arr.includes('b', -100); // true
arr.includes('c', -100); // true

四、與es5的indexOf區別

1、首先他們的返回值,indexOf是返回數值型的,includes是返回布林型的,所以在if條件判斷的時候includes要簡單得多,而indexOf 需要多寫一個條件進行判斷。

2、在ES5,Array已經提供了indexOf用來查詢某個元素的位置,如果不存在就返回-1,但是這個函式在判斷陣列是否包含某個元素時有兩個小不足,第一個是它會返回-1和元素的位置來表示是否包含。

另一個問題是不能判斷是否有NaN的元素,如果陣列中有NaN,你又正好需要判斷陣列是否有存在NaN,這時你使用indexOf是無法判斷的,你必須使用includes這個方法。

3、都有自己的特點,但是那麼時候使用includes什麼時候使用indexOf還是要看情況來決定,如果你想要查詢某個元素在陣列中的位置,你就用indexOf,如果你只是想知道陣列中是否存在某個元素,你用includes方法比較合適的。

 

相關文章