includes() 方法用來判斷一個數組是否包含一個指定的值,根據情況,如果包含則返回 true,否則返回 false。 indexOf() 方法可返回某個制定的字元串值在字元串中首次出現的位置 indexOf的一些缺點 語義化問題,其返回值需要和 -1 比較,第一次使用無法直觀理解。 內部使用嚴 ...
includes()
方法用來判斷一個數組是否包含一個指定的值,根據情況,如果包含則返回true
,否則返回false
。
indexOf()
方法可返回某個制定的字元串值在字元串中首次出現的位置
indexOf的一些缺點
- 語義化問題,其返回值需要和 -1 比較,第一次使用無法直觀理解。
- 內部使用嚴格運算符 即 三等 === ,會導致對NaN的誤判。
[NaN].indexOf(NaN)
// 返回值 -1
[NaN].includes(NaN)
// 返回值 true
indexOf()與includes()的區別
- 輸入參數相同,且索引都可以為負值。
- 返回值類型不同
indexOf()返回索引值
,用於判斷某一個元素在數組或字元串中首次
出現的位置
includes()返回布爾值
,用於判斷數組或者字元串中是否包含某一元素
3.對 NaN 處理:indexOf()不能判斷是否有NaN
,而includes()可以判斷。
let arr = [NaN]
log( arr.indexOf(NaN) ) // -1
log( arr.includes(NaN) ) // true
4.對空值處理:includes()將空值判斷為 undefined。
let arr = [ , , ]
log( arr.indexOf(undefined) ) // -1
log( arr.includes(undefined) ) // true