es6数组includes()用法实例分析


Posted in Javascript onApril 18, 2020

本文实例讲述了es6数组includes()用法。分享给大家供大家参考,具体如下:

Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的includes方法类似。ES2016引入了该方法。

[1, 2, 3].includes(2) // true
[1, 2, 3].includes(4) // true
[1, 2, NaN].includes(NaN) // true

该方法的第二个参数表示搜索的起始位置,默认为0。如果第二个参数为负数,则表示倒数的位置,如果这时它大于数组长度(比如第二个参数为-4, 但数组长度为3),则会重置为0开始。

[1, 2, 3].includes(3, 3); // false
[1, 2, 3].includes(3, -1); // true

没有该方法之前,我们通常使用数组的indexOf方法,检查是否包含某个值。

if (arr.indexOf(el) !== -1) {
 // ...
}

indexOf方法有两个缺点,一是不够语义化,它的含义是找到参数值的第一个出现位置,所以要去比较是否不等于-1,表达起来不够直观。二是,它内部使用严格相等运算符进行判断,这会导致对NaN的误判。

[NaN].indexOf(NaN) // -1

includes使用的是不一样的判断算法,就没有这个问题。

[NaN].includes(NaN) // true

下面代码用来检查当前环境是否支持该方法,如果不支持,部署一个简易的替代版本。

const contains = (() => Array.prototype.includes 
? (arr, value) => arr.includes(value)
:(arr, value) => arr.some(el => el === value) 
)()

另外,Map和Set数据结构有一个has方法需要注意与includes区分。

-Map结构的has方法,是用来查找键名的,比如Map.prototype.has(key),
WeakMap.prototype.has(key), Reflect.has(target, propertyKey)

-Set结构的has方法,是用来查找值的,比如Set.prototype.has(value),
WeakSet.prototype.has(value)

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
jQuery checkbox全选/取消全选实现代码
Nov 14 Javascript
JS判断浏览器是否支持某一个CSS3属性的方法
Oct 17 Javascript
jQuery中each()方法用法实例
Dec 27 Javascript
AngularJS 工作原理详解
Aug 18 Javascript
JS简单实现tab切换效果的多窗口显示功能
Sep 07 Javascript
js html5 css俄罗斯方块游戏再现
Oct 17 Javascript
JS实现简易的图片拖拽排序实例代码
Jun 09 Javascript
js 事件的传播机制(实例讲解)
Jul 20 Javascript
浅谈Vue.js应用的四种AJAX请求数据模式
Aug 30 Javascript
fetch 使用及如何接收JS传值
Nov 11 Javascript
微信小程序向Java后台传输参数的方法实现
Dec 10 Javascript
Taro小程序自定义顶部导航栏功能的实现
Dec 17 Javascript
es6数组的flat(),flatMap()函数用法实例分析
Apr 18 #Javascript
es6函数中的作用域实例分析
Apr 18 #Javascript
es6函数之rest参数用法实例分析
Apr 18 #Javascript
vue实现短信验证码输入框
Apr 17 #Javascript
JS监听组合按键思路及实现过程
Apr 17 #Javascript
javascript canvas检测小球碰撞
Apr 17 #Javascript
Vue实现浏览器打印功能的代码
Apr 17 #Javascript
You might like
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
2013/06/05 PHP
WordPress过滤垃圾评论的几种主要方法小结
2016/07/11 PHP
php中get_magic_quotes_gpc()函数说明
2017/02/06 PHP
JavaScript脚本性能优化注意事项
2008/11/18 Javascript
JavaScript 设计模式 安全沙箱模式
2010/09/24 Javascript
用jQuery实现一些导航条切换,显示隐藏的实例代码
2013/06/08 Javascript
js二维数组定义和初始化的三种方法总结
2014/03/03 Javascript
javascript实现全局匹配并替换的方法
2015/04/27 Javascript
jQuery遍历DOM元素与节点方法详解
2016/04/14 Javascript
原生javascript 学习之js变量全面了解
2016/07/14 Javascript
对js中回调函数的一些看法
2016/08/29 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
2017/09/20 Javascript
详解如何优雅地在React项目中使用Redux
2017/12/28 Javascript
微信小程序实现文字从右向左无限滚动
2020/11/18 Javascript
[02:04]2014DOTA2国际邀请赛 BBC小组赛第三天总结
2014/07/12 DOTA
Python threading多线程编程实例
2014/09/18 Python
使用Python的Zato发送AMQP消息的教程
2015/04/16 Python
Win10下Python环境搭建与配置教程
2016/11/18 Python
Python实现PS滤镜特效之扇形变换效果示例
2018/01/26 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
2019/06/27 Python
python名片管理系统开发
2020/06/18 Python
完美解决torch.cuda.is_available()一直返回False的玄学方法
2021/02/06 Python
财务管理职业生涯规划书
2014/02/26 职场文书
购房意向书
2014/04/01 职场文书
铁路安全事故反思
2014/04/26 职场文书
母亲节演讲稿
2014/05/27 职场文书
团拜会策划方案
2014/06/07 职场文书
校长师德表现自我评价
2015/03/04 职场文书
2015年党员创先争优公开承诺书
2015/04/27 职场文书
2016年全国爱眼日宣传教育活动总结
2016/04/05 职场文书
SQLServer2008提示评估期已过解决方案
2021/04/12 SQL Server
Java基础之this关键字的使用
2021/06/30 Java/Android
springboot 启动如何排除某些bean的注入
2021/08/02 Java/Android
详解JS数组方法
2021/11/20 Javascript
梳理总结Python开发中需要摒弃的18个坏习惯
2022/01/22 Python
Android 中的类文件和类加载器详情
2022/06/05 Java/Android