ES7:Array.prototype.includes()、幂运算符

1 篇文章 0 订阅

Array.prototype.includes()

  • Array.prototype.includes() 方法用来判断一个数组是否包含一个指定的值,如果包含则返回 true,否则返回 false
const arr = ['es6', 'es7', 'es8']
console.log(arr.includes('es6')) // true
console.log(arr.includes('es9')) // false
  •  接收俩个参数,要搜索的值和开始搜索的索引
  • 第二个参数可选,如果为负值,和数组长度相加确定位置
const arr = ['es6', 'es7', 'es8']
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

Array.prototype.includes() 与 Array.prototype.indexOf() 比较

  • includes() 返回 boolean 类型,indexOf() 返回索引位置
['a', 'b', 'c'].includes('a') //true
['a', 'b', 'c'].indexOf('a') > -1 //true

console.log(arr.indexOf('es7')) // 1
console.log(arr.indexOf('es7') > -1) // true
  • includes() 和 indexOf() 只能判断基本数据类型,对于复杂数据类型无法判断
const arr = [1, [2, 3], 4]
arr.includes([2, 3]) //false
arr.indexOf([2, 3]) //-1
  • 两者都是采用全等(===)操作符作比较
  • 不同之处在于对 NaN 处理结果不同,JS 中 NaN === NaN 返回 false, indexOf() 也是这样处理,但是 includes() 返回 true
const demo = [1, NaN, 2, 3]
demo.indexOf(NaN) //-1
demo.includes(NaN) //true

总结

  • 如果只想知道某个值是否在数组中存在,而不关心它的索引位置,建议使用 includes() 方法
  • 如果想获取一个值在数组中的位置,那么只能使用 indexOf() 方法

补充

  • ES7 之前想判断数组中是否包含一个元素,可以这样写
// 方法一:find()
const arr = [1, 2, 3]
const res = arr.find(item => {
  return item === 2
})
console.log(res) // 2
  • Array.prototype.find() 返回数组中满足条件的第一个数组元素值。否则返回 undefined
  • Array.prototype.findIndex() 返回数组中满足条件的第一个数组元素索引。否则返回 -1
// 方法二
const arr = [1, 2, 3]
const res = arr.filter(item => {
  return item > 1
})
console.log(res) // [2, 3]
  • Array.prototype.filter() 返回满足条件数组项,组成一个新数组返回

幂运算符 **

  • 注:幂运算符之间不能有空格
// ES7 写法
console.log(2 ** 10)

// 也可以使用 Math.pow()
console.log(Math.pow(2, 10))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值