一、定義
includes() 方法用來判斷一個數組是否包含一個指定的值,如果是返回 true,否則false。
二、語法
arr.includes(searchElement) arr.includes(searchElement, fromIndex) //searchElement:必須。需要查找的元素值。 //fromIndex:可選。表示判斷的起始位置。從該索引處開始查找 searchElement。
//如果為負值,則按升序從 array.length + fromIndex 的索引開始搜索。默認為 0。
//eg:
const arr = ['a', 'b', 'c', NaN];
console.log(arr.includes("a"));//true
console.log(arr.includes(NaN));//true
console.log(arr.includes("a",0));//true
console.log(arr.includes("a",2));//false
三、其他
如果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這個方法。
而ES6提供的Array.includes()函數判斷是否包含某一元素,除了不能定位外,解決了indexOf的上述的兩個問題。它直接返回true或者false表示是否包含元素,對NaN一樣能有效。
3、都有自己的特點,但是那么時候使用includes什么時候使用indexOf還是要看情況來決定,如果你想要查找某個元素在數組中的位置,你就用indexOf,如果你只是想知道數組中是否存在某個元素,你用includes方法比較合適的。
五、查看數組原型鏈


