4-1 数组的扩展

36 阅读1分钟

includes 是可以检测NaN的,而indexOf 不能检测NaN

includes跟indexOf 在去 检测内容的时候相当于是严格模式,=== 去进行值的比较,不仅判断值是否相等,也会判断类型是否相等

如果当前数组中包含NaN的情况下需要使用includes 如果想要判断一个值出现的下标需要用indexOf

Array.prototype.includes()

const arr = ['es6', 'es7', 'es8']
console.log(arr.includes('es7')) // true

传入下标位置,从传入的下标开始往后查找

console.log(arr.includes('es7', 1)) // true
console.log(arr.includes('es7', 2)) // false

传入负数是,从后面的索引开始往后找

console.log(arr.includes('es7', -1)) // false
console.log(arr.includes('es7', -2)) // true

console.log(arr.indexOf('es7')) // 1


const arr = ['es6', ['es7', 'es8'], 'es9']
console.log(arr.includes('es7')) // false
console.log(arr.indexOf('es7'))  // -1

includes跟indexOf 都是判断当前数组是否包含某一个值,但是只能判断基本数据类型,不能判断引用数据类型

  • includes跟indexOf 的差别
const arr = ['es6', 'es7', NaN, 'es8']
console.log(arr.includes(NaN)) // true
console.log(arr.indexOf(NaN))  // -1
  • 幂运算符 ** (指数运算符) 等同于 Math.pow()
// 2 10 -> 1024
function pow(x, y){
  let res = 1
  for(let i = 0; i < y; i++){
    res *= x
  }
  return res
}
pow(2, 10)
console.log(pow(2, 10))

console.log(Math.pow(2, 10))

console.log(2 ** 10)