一、定義
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方法比較合適的。