數組實例的find
方法,用於找出第一個符合條件的數組成員。它的參數是一個回調函數,所有數組成員依次執行該回調函數,直到找出第一個返回值為true
的成員,然后返回該成員。如果沒有符合條件的成員,則返回undefined
。
[1, 4, -5, 10].find((n) => n < 0)
數組實例的findIndex
方法的用法與find
方法非常類似,返回第一個符合條件的數組成員的位置,如果所有成員都不符合條件,則返回-1
。
[1, 5, 10, 15].findIndex(function(value, index, arr) { return value > 9; }) // 2
Array.prototype.includes
方法返回一個布爾值,表示某個數組是否包含給定的值,與字符串的includes
方法類似。該方法屬於ES7,但Babel轉碼器已經支持。
[1, 2, 3].includes(2); // true [1, 2, 3].includes(4); // false [1, 2, NaN].includes(NaN); // true
沒有該方法之前,我們通常使用數組的indexOf
方法,檢查是否包含某個值。
if (arr.indexOf(el) !== -1) { // ... }
indexOf
方法有兩個缺點,一是不夠語義化,它的含義是找到參數值的第一個出現位置,所以要去比較是否不等於-1,表達起來不夠直觀。二是,它內部使用嚴格相當運算符(===)進行判斷,這會導致對NaN
的誤判。
[NaN].indexOf(NaN)
參照鏈接:http://es6.ruanyifeng.com/#docs/array