ES7新功能includes用法详解

简介: ES7新功能includes用法详解

Array.prototype.includes():

includes()作用,是查找一个值在不在数组里,若是存在则返回true,不存在返回false

1.基本用法:

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

2.接收俩个参数:要搜索的值和搜索的开始索引

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

3.与ES6中的indexOf()比较

  • 有些时候是等效的
['a', 'b', 'c'].includes('a')          //true
['a', 'b', 'c'].indexOf('a') > -1      //true
var arr = [1, 2, 3]
var a = 1;
arr.includes(a)   //true
arr.indexOf(a)    //0
  • 在判断 +0 与 -0 时,被认为是相同的。
[1, +0, 3, 4].includes(-0)    //true
[1, +0, 3, 4].indexOf(-0)     //1
  • 只能判断简单类型的数据,对于复杂类型的数据,比如对象类型的数组,二维数组,这些,是无法判断的.
var arr = [1, [2, 3], 4]
arr.includes([2, 3])   //false
arr.indexOf([2, 3])    //-1

4.优缺点比较

  • 简便性
    includes()返回的是布尔值,能直接判断数组中存不存在这个值,而indexOf()返回的是索引,这一点上前者更加方便
  • 精确性
    两者都是采用===的操作符来作比较的,不同之处在于:对于NaN的处理结果不同。我们知道js中NaN === NaN的结果是false,indexOf()也是这样处理的,但是includes()不是这样的。
let demo = [1, NaN, 2, 3]
demo.indexOf(NaN)        //-1
demo.includes(NaN)       //true

5.总结

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

目录
相关文章
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
396 4
|
8天前
|
Linux API iOS开发
OpenClaw(Clawdbot)保姆级教程:阿里云/Windows 11/Linux/macOS部署+百炼API配置及避坑手册
OpenClaw作为一款本地优先、强执行能力的开源AI智能体(Agent),核心价值在于“真正能做事”——通过自然语言指令自动拆解任务、调用工具,在设备上完成实际操作(如文件处理、工具调用、多平台联动),而非仅提供对话回答。目前多数教程聚焦Mac与Linux系统,针对Windows平台的详细指南相对匮乏,且新手在部署过程中常面临权限不足、端口占用、API配置失败等问题。
4703 3
|
机器学习/深度学习 Shell 算法框架/工具
【姿态估计】实操记录:使用Dlib与mediapipe进行人脸姿态估计
【姿态估计】实操记录:使用Dlib与mediapipe进行人脸姿态估计
2336 0
|
1月前
|
前端开发 机器人 iOS开发
深入OpenClaw网关:架构、网络模型与运行机制全解析
OpenClaw 不仅仅是一个聊天机器人工具,它是一套完整的、长期运行的AI Agent基础设施。其核心Gateway网关扮演着整个系统的“大脑”,统一管理所有即时通信渠道的连接,并协调Pi智能体、移动节点与应用之间的复杂交互。理解其进程模型与网络架构,是确保高权限智能体稳定、可控运行的关键。
|
3月前
|
存储 文字识别 数据可视化
实用代码工具:Python打造PDF选区OCR / 截图批量处理工具(支持手动/全自动模式)
一款基于Python的PDF区域OCR与截图工具,支持精准框选、文字识别、图片截取及Excel一键导出。内置手动审核与全自动批量处理模式,结合PyMuPDF、easyocr等技术,实现高效、可视化的PDF数据提取,适用于发票、报表等场景,显著提升办公效率。
493 11
|
人工智能 文字识别 并行计算
行业实践 | 基于Qwen2-VL实现医疗表单结构化输出
本项目针对不同医院检查报告单样式差异大、手机拍摄质量差等问题,传统OCR识别效果不佳的情况,探索并选定了Qwen2-vl系列视觉语言模型。通过微调和优化,模型在识别准确率上显著提升,能够精准识别并结构化输出报告单信息,支持整张报告单及特定项目的识别。系统采用FastAPI封装接口,Gradio构建展示界面,具备高效、灵活的应用特性。未来该方案可扩展至多种文本识别场景,助力行业数字化转型。
1279 20
|
SQL 存储 关系型数据库
Mysql并发控制和日志
通过深入理解和应用 MySQL 的并发控制和日志管理技术,您可以显著提升数据库系统的效率和稳定性。
438 10
|
安全 Java 测试技术
【Java】已解决Java中的java.util.NoSuchElementException异常
【Java】已解决Java中的java.util.NoSuchElementException异常
1294 1
|
运维 负载均衡 Ubuntu
自动化运维的利器:Ansible入门与实践
【10月更文挑战第31天】在当今快速发展的信息技术时代,高效的运维管理成为企业稳定运行的关键。本文将引导读者了解自动化运维工具Ansible的基础概念、安装步骤、基本使用,以及如何通过实际案例掌握其核心功能,从而提升工作效率和系统稳定性。

热门文章

最新文章