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 相关文章推荐
js实现的常用的左侧导航效果
Oct 17 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
Apr 17 Javascript
JQuery中属性过滤选择器用法实例分析
May 18 Javascript
利用HTML5的画布Canvas实现刮刮卡效果
Sep 06 Javascript
你所未知的3种Node.js代码优化方式
Feb 25 Javascript
判断数组的最佳方法(推荐)
Oct 11 Javascript
JSON键值对序列化和反序列化解析
Jan 24 Javascript
Vue2.0如何发布项目实战
Jul 27 Javascript
Angular4学习笔记之根模块与Ng模块
Sep 09 Javascript
Vue ElementUi同时校验多个表单(巧用new promise)
Jun 06 Javascript
vue项目部署到Apache服务器中遇到的问题解决
Aug 24 Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
Apr 11 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
用PHP读取RSS feed的代码
2008/08/01 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
2017/12/13 PHP
找到了一篇jQuery与Prototype并存的冲突的解决方法
2007/08/29 Javascript
picChange 图片切换特效的函数代码
2010/05/06 Javascript
修改jquery.lazyload.js实现页面延迟载入
2010/12/22 Javascript
输入密码检测大写是否锁定js实现代码
2012/12/03 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
2013/05/08 Javascript
JS获取html对象的几种方式介绍
2013/12/05 Javascript
javascript数字时钟示例分享
2014/04/23 Javascript
浅谈Javascript变量作用域问题
2014/12/16 Javascript
jQuery ajax的功能实现方法详解
2017/01/06 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
2017/04/18 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
2017/08/11 Javascript
AngularJs的UI组件ui-Bootstrap之Tooltip和Popover
2018/07/13 Javascript
vue项目中mock.js的使用及基本用法
2019/05/22 Javascript
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
python发布模块的步骤分享
2014/02/21 Python
Python文件的读写和异常代码示例
2017/10/31 Python
Python处理命令行参数模块optpars用法实例分析
2018/05/31 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
2018/12/11 Python
python装饰器简介---这一篇也许就够了(推荐)
2019/04/01 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
Django框架 信号调度原理解析
2019/09/04 Python
Django3.0 异步通信初体验(小结)
2019/12/04 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
2020/02/14 Python
Django web自定义通用权限控制实现方法
2020/11/24 Python
HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用
2013/01/30 HTML / CSS
HTML5实现预览本地图片
2016/02/17 HTML / CSS
德国最大的设计师鞋网上商店:Budapester
2017/12/07 全球购物
生产文员岗位职责
2014/04/05 职场文书
学校读书活动总结
2014/06/30 职场文书
2015大学生自我评价范文
2015/03/03 职场文书
会计专业求职信范文
2015/03/19 职场文书
保安辞职申请书应该怎么写?
2019/07/15 职场文书
Python+Selenium实现读取网易邮箱验证码
2022/03/13 Python