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 相关文章推荐
在Firefox下js select标签点击无法弹出
Mar 06 Javascript
JS判断文本框内容改变事件的简单实例
Mar 07 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
Oct 27 Javascript
JavaScript在网页中画圆的函数arc使用方法
Nov 13 Javascript
详解Vue方法与事件
Mar 09 Javascript
BootStrap模态框不垂直居中的解决方法
Oct 19 Javascript
JavaScript相等运算符的九条规则示例详解
Oct 20 Javascript
Vue实现按钮级权限方案
Nov 21 Javascript
微信小程序加载机制及运行机制图解
Nov 27 Javascript
如何在Vue.JS中使用图标组件
Aug 04 Javascript
vue实现移动端拖动排序
Aug 21 Javascript
react实现复选框全选和反选组件效果
Aug 25 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
thinkphp jquery实现图片上传和预览效果
2020/07/22 PHP
Laravel+Intervention实现上传图片功能示例
2019/07/09 PHP
改变隐藏的input中value值的方法
2014/03/19 Javascript
jQuery中DOM操作实例分析
2015/01/23 Javascript
js实现图片漂浮效果的方法
2015/03/02 Javascript
JavaScript判断IE版本型号
2015/07/27 Javascript
基于JavaScript实现仿京东图片轮播效果
2015/11/06 Javascript
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
2016/09/14 Javascript
浅谈jQuery双事件多重加载的问题
2016/10/05 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
2016/11/13 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
2017/04/17 jQuery
Vue-cli中为单独页面设置背景色的实现方法
2018/02/11 Javascript
vue-cli配置环境变量的方法
2018/07/09 Javascript
JavaScript引用类型Function实例详解
2018/08/09 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
详解element-ui中el-select的默认选择项问题
2019/08/02 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
vue打包静态资源后显示空白及static文件路径报错的解决
2020/09/02 Javascript
iview实现动态表单和自定义验证时间段重叠
2021/01/10 Javascript
[01:55]《走出家门看比赛》——DOTA2 2015国际邀请赛同城线下观战
2015/07/18 DOTA
Python 正则表达式入门(初级篇)
2016/12/07 Python
PyCharm设置护眼背景色的方法
2018/10/29 Python
Python3 安装PyQt5及exe打包图文教程
2019/01/08 Python
详解opencv Python特征检测及K-最近邻匹配
2019/01/21 Python
python实现多线程端口扫描
2019/08/31 Python
python matplotlib中的subplot函数使用详解
2020/01/19 Python
python Plotly绘图工具的简单使用
2020/03/03 Python
详解如何获取localStorage最大存储大小的方法
2020/05/21 HTML / CSS
意大利在线大学图书馆:Libreria universitaria
2019/07/16 全球购物
顶岗实习接收函
2014/01/09 职场文书
车间核算员岗位职责
2014/07/01 职场文书
房屋鉴定委托书范本
2014/09/23 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
Nginx快速入门教程
2021/03/31 Servers
css filter和getUserMedia的联合使用
2022/02/24 HTML / CSS