首页 > 建站教程 > JS、jQ、TS >  JS中 includes() 和 indexOf()正文

JS中 includes() 和 indexOf()

1、基本区别

includes()和indexOf()都是用来检查数组和字符串是否包含某些元素,includes()返回值是布尔值,indexOf()返回的是索引值,如果没有返回-1

// 检查字符串
const str = 'background'
str.indexOf('a')  // 1
str.includes('a') // true
// 检查数组
const arr = [1,2,3]
arr.indexOf(2)  // 1
arr.includes(2) // true


2、检查NAN和undefined

因为indexOf()是严格按照===操作符来做值的比较,所以indexOf()不能检查NAN,但是includes()可以

let arr = [NaN,]
arr.indexOf(NaN)    // -1
arr.indexOf(undefined) // -1
arr.includes(NaN)   // true
arr.includes(undefined) // true


3、检查-0和+0

includes()和indexOf()没有区分-0和+0,在判断时,认为二者是相同的

let arr = [+0]
arr.includes(-0) // true
arr.indexOf(-0) // 0


4、不能检查复杂数据类型

二者只能判断简单数据类型,对于对象、数组等复杂数据类型是不可以判断的

let arr = [{a:1},{a:2}]
arr.includes({a:1}) // false
arr.indexOf({a:1}) // -1