唯品秀前端博客
当前位置: 前端开发 > JavaScript > 【ES7】Array.prototype.includes() PK indexOf

【ES7】Array.prototype.includes() PK indexOf

2018-05-07 分类:JavaScript 作者:管理员 阅读(1545)

Array.prototype.includes()方法

includes()的作用,是查找一个值在不在数组里,若在,则返回true,反之返回false。 基本用法:

1
2
['a', 'b', 'c'].includes('a')     // true
['a', 'b', 'c'].includes('d')     // false

Array.prototype.includes()方法接收两个参数:要搜索的值和搜索的开始索引。当第二个参数被传入时,该方法会从索引处开始往后搜索(默认索引值为0)。若搜索值在数组中存在则返回true,否则返回false。 且看下面示例:

1
2
3
['a', 'b', 'c', 'd'].includes('b')         // true
['a', 'b', 'c', 'd'].includes('b', 1)      // true
['a', 'b', 'c', 'd'].includes('b', 2)      // false

那么,我们会联想到ES6里数组的另一个方法indexOf,下面的示例代码是等效的:

1
2
['a', 'b', 'c'].includes('a')          //true
['a', 'b', 'c'].indexOf('a') > -1      //true

此时,就有必要来比较下两者的优缺点和使用场景了。

简便性

从这一点上来说,includes略胜一筹。熟悉indexOf的同学都知道,indexOf返回的是某个元素在数组中的下标值,若想判断某个元素是否在数组里,我们还需要做额外的处理,即判断该返回值是否>-1。而includes则不用,它直接返回的便是Boolean型的结果。

精确性

两者使用的都是 === 操作符来做值的比较。但是includes()方法有一点不同,两个NaN被认为是相等的,即使在NaN === NaN结果是false的情况下。这一点和indexOf()的行为不同,indexOf()严格使用===判断。请看下面示例代码:

1
2
3
4
let demo = [1, NaN, 2, 3]

demo.indexOf(NaN)        //-1
demo.includes(NaN)       //true

上述代码中,indexOf()方法返回-1,即使NaN存在于数组中,而includes()则返回了true。

提示:由于它对NaN的处理方式与indexOf不同,假如你只想知道某个值是否在数组中而并不关心它的索引位置,建议使用includes()。如果你想获取一个值在数组中的位置,那么你只能使用indexOf方法。

includes()还有一个怪异的点需要指出,在判断 +0 与 -0 时,被认为是相同的。

1
2
[1, +0, 3, 4].includes(-0)    //true
[1, +0, 3, 4].indexOf(-0)     //1

在这一点上,indexOf()与includes()的处理结果是一样的,前者同样会返回 +0 的索引值。

注意:在这里,需要注意一点,includes()只能判断简单类型的数据,对于复杂类型的数据,比如对象类型的数组,二维数组,这些,是无法判断的。

「两年博客,如果觉得我的文章对您有用,请帮助本站成长」

赞(5) 打赏

谢谢你请我吃鸡腿*^_^*

支付宝
微信
5

谢谢你请我吃鸡腿*^_^*

支付宝
微信
标签:

上一篇:

下一篇:

你可能感兴趣

共有 0 条评论 - 【ES7】Array.prototype.includes() PK indexOf

博客简介

唯品秀博客: weipxiu.com,一个关注Web前端开发技术、关注用户体验、坚持更多原创实战教程的个人网站,愿景:成为宇宙中最具有代表性的前端博客,期待您的参与,主题源码 

精彩评论

友情链接

他们同样是一群网虫,却不是每天泡在网上游走在淘宝和网游之间、刷着本来就快要透支的信用卡。他们或许没有踏出国门一步,但同学却不局限在一国一校,而是遍及全球!申请交换友链

站点统计

  • 文章总数: 242 篇
  • 草稿数目: 0 篇
  • 分类数目: 15 个
  • 独立页面: 6 个
  • 评论总数: 871 条
  • 链接总数: 14 个
  • 标签总数: 432 个
  • 建站时间: 1062 天
  • 注册用户: 3456 人
  • 访问总量: 8667547 次
  • 最近更新: 2019年11月11日
服务热线:
 173xxxx7240

 QQ在线交流

 旺旺在线