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 09 Javascript
display和visibility的区别示例介绍
Feb 26 Javascript
javascript轻量级模板引擎juicer使用指南
Jun 22 Javascript
百度地图API之本地搜索与范围搜索
Jul 30 Javascript
js鼠标点击图片切换效果代码分享
Aug 26 Javascript
Ionic快速安装教程
Jun 03 Javascript
BootStrap入门教程(二)之固定的内置样式
Sep 19 Javascript
angularjs数组判断是否含有某个元素的实例
Feb 27 Javascript
详解vuejs2.0 select 动态绑定下拉框支持多选
Apr 25 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
Feb 05 Javascript
JavaScript cookie原理及使用实例
May 08 Javascript
vue 数据操作相关总结
Dec 17 Vue.js
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匹配UTF-8中文的正则表达式
2015/05/13 PHP
基于PHP实现假装商品限时抢购繁忙的效果
2015/10/16 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
PHPExcel 修改已存在Excel的方法
2018/05/03 PHP
JavaScript函数、方法、对象代码
2008/10/29 Javascript
ajax 缓存 问题 requestheader
2010/08/01 Javascript
jQuery如何防止这种冒泡事件发生
2015/02/27 Javascript
js实现简单div拖拽功能实例
2015/05/12 Javascript
什么是JavaScript注入攻击?
2016/09/14 Javascript
web打印小结
2017/01/11 Javascript
jquery在启动页面时,自动加载数据的实例
2018/01/22 jQuery
vue+vant 上传图片需要注意的地方
2021/01/03 Vue.js
Python程序设计入门(4)模块和包
2014/06/16 Python
跟老齐学Python之私有函数和专有方法
2014/10/24 Python
Python实现学校管理系统
2018/01/11 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
Python3.5局部变量与全局变量作用域实例分析
2019/04/30 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
Django视图扩展类知识点详解
2019/10/25 Python
Python之Class&Object用法详解
2019/12/25 Python
python3中sys.argv的实例用法
2020/04/24 Python
Python 发送邮件方法总结
2020/08/10 Python
python利用线程实现多任务
2020/09/18 Python
python 基于selenium实现鼠标拖拽功能
2020/12/24 Python
html5 canvas 简单画板实现代码
2012/01/05 HTML / CSS
Jo Malone美国官网:祖玛珑香水
2017/03/27 全球购物
Ajax主要包含了哪些技术
2014/06/12 面试题
勤俭节约倡议书
2014/04/14 职场文书
电子商务专业毕业生自荐书
2014/06/22 职场文书
2014年环境卫生工作总结
2014/11/24 职场文书
初中作文评语集锦
2014/12/25 职场文书
2015年妇幼保健工作总结
2015/05/19 职场文书
导游词之宿迁乾隆行宫
2019/10/15 职场文书
只需要100行Python代码就可以实现的贪吃蛇小游戏
2021/05/27 Python
Java设计模式中的命令模式
2022/04/28 Java/Android