indexOf与includes的区别:https://blog.csdn.net/gtLBTNq9mr3/article/details/78700118

includes和indexOf相比较:
相同点:二者所传的参数是一样的,第一个参数传要判断的元素,第二个参数传开始检索的下标位置
不同点:返回值不同
1、indexOf:返回的是元素的所在下标,如果不存在则返回-1
优点:元素存在可获取到元素的位置
缺点:(1)无法判断是否有NaN的元素(2)返回的值不够语义化,需要我们进行处理

2、includes:返回一个Boolean值,有:true,没有:false
优点:(1)可判断NaN元素(2)返回值十分语义化,不需要再次处理
缺点:无法获取元素的下标
---------------------
作者:wangcuiling_123
来源:CSDN
原文:https://blog.csdn.net/wangcuiling_123/article/details/78523066
版权声明:本文为博主原创文章,转载请附上博文链接!

从ES6部署includes方法,好像indexOf就失去了它的用武之地了,到底indexOf有什么不足,这篇文章就要来介绍这两个方法之间的区别。

看一个函数,先看他们的返回值,一个是返回数值型的,一个是返回布尔型的,所以在if条件判断的时候includes要简单得多,而indexOf 需要多写一个条件进行判断。

var ary = [1];

if (ary.indexOf(1) !== -1) {

console.log("数组存在1")

}

if (ary.includes(1)) {

console.log("数组存在1")

}

如果数组中有NaN,你又正好需要判断数组是否有存在NaN,这时你使用indexOf是无法判断的,你必须使用includes这个方法。

var ary1 = [NaN];

console.log(ary1.indexOf(NaN))//-1

console.log(ary1.includes(NaN))//true

当数组的有空的值的时候,includes会认为空的值是undefined,而indexOf不会。

var ary1 = new Array(3);

console.log(ary1.indexOf(undefined));//-1

console.log(ary1.includes(undefined))//true

总结,到底什么时候使用includes什么时候使用indexOf还是要看情况来决定,如果你想要查找某个元素在数组中的位置,你就用indexOf,如果你只是想知道数组中是否存在某个元素,你用includes方法比较合适的。

indexOf与includes的区别的更多相关文章

  1. 关于ES5的indexof()和ES7的includes()的区别

    早es5的时候就有了查找数组中是否包含某个值的API  indexOf(); 使用方法很简单,比如有个数组是: var arr=[2,3,4,"php"] 如果我们想知道数组中有没 ...

  2. indexOf与includes的比较

    indexOf和includes都代表检测数组或字符串中是否包含某一个元素 其中indexOf返回的是数值类型,而includes返回的是布尔类型 var ary = [,,]; console.lo ...

  3. indexOf()、includes()、startsWith()、endsWith()

    是否包含字符串三种新方法 传统上,JavaScript只有 indexOf 方法,可以用来确定一个字符串是否包含在另一个字符串中.ES6又提供了三种新方法. includes():返回布尔值,表示是否 ...

  4. js中字符串函数indexOf与search的区别

    IndexOf()方法是用来判断一个字符串是否存在于一个更长的字符串中.从长字符串左端到右端来搜索,如果存在该子字符串就返回它所处的位置(即索引).如果在被搜索的字符串没有找到要查找的字符串返回-1. ...

  5. indexOf 和 lastIndexOf的区别

    indexOf 和  lastIndexOf 是什么? indexOf 和 lastIndexOf 都是索引文件 indexOf 是查某个指定的字符串在字符串首次出现的位置(索引值) (也就是从前往后 ...

  6. indexOf 和 lastIndexOf 的区别

    indexOf 和 lastIndexOf 是什么? indexOf 和 lastIndexOf 都是索引文件 indexOf 是查某个指定的字符串在字符串首次出现的位置(索引值) (也就是从前往后查 ...

  7. js数组中容易误用的一些方法

    1.every和some 两个方法的参数都是一个函数,函数的有3个参数,依次是当前值value,索引index,数组array every判断数据中的每一项是否满足某个条件,如果满足就返回true,有 ...

  8. 数组Array和字符串String的indexOf方法,以及ES7(ES2016)中新增的Array.prototype.includes方法

    前言 我们在判断某一个字符是否存在于一个字符串中或者某一个值是否存在于一个数组中时,ES7之前我们需要使用indexOf,ES7引入了新的方法includes 语法 数组:Array.inexOf(s ...

  9. JS 数组位置方法 indexOf()和lastIndexOf()的理解

    var numbers = [1,3,5,7,9,4,3,2,1]; console.log(numbers.indexOf(5)); //从数组的0位开始查找 5 位于数组里面的位置 输出2 首先 ...

随机推荐

  1. 搭建Eclipse+pydev+python2.7.5+django1.5.1+mysql5.0.45平台

    mysqldb 下载地址 http://sourceforge.net/projects/mysql-python/ or https://pypi.python.org/pypi/MySQL-pyt ...

  2. windows 10 自动升级后环境变量无效

    上个礼拜放假的时候,win10提示需要升级,我当时随手就一点更新并关机...今天,在启动项目时候尴尬了: D:\project\js\iam-web\code\iam-web>npm run d ...

  3. centos7卸载YUM后重装过程 -bash: yum: command not found / -bash: yum: 未找到命令

    [root@localhost ~]# rpm -qa |grep yum yum-3.4.3-158.el7.centos.noarch yum-plugin-fastestmirror-1.1.3 ...

  4. 《Android程序设计》课程学习

    一.课件内容 2019-2010-1学期课件,点击查看 二.作业相关 上交作业的方法 访问ftp://192.168.42.254:22,登录后找到自己的姓名文件夹,放入作业即可.登录账号为stu2, ...

  5. 树——populating-next-right-pointers-in-each-node(填充每个节点的next指针)

    问题: Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode ...

  6. 前端面试题(4)JavaScript

    前端面试题JavaScript(一) JavaScript的组成 JavaScript 由以下三部分组成: ECMAScript(核心):JavaScript 语言基础 DOM(文档对象模型):规定了 ...

  7. AIX下的ha高可用集群cluster

    安装ha软件 一.安装软件 最稳定的版本是5.4.0,优先安装稳定版本5.4 安装依赖于包base.data, cluster的man包安装失败原因是缺少base.data包 安装所有cluster. ...

  8. [洛谷P2296] NOIP2014 寻找道路

    问题描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通. 2 .在满足条 ...

  9. php substr_count()函数 语法

    php substr_count()函数 语法 作用:统计一个字符串,在另一个字符串中出现次数大理石量具 语法:substr_count(string,substring,start,length) ...

  10. hibernate插入数据测试无异常,但数据库没有数据

    解决方法: spring test测试默认会将事务回滚,如果想阻止spring transactional回滚,在test方法上加注解@Rollback(false)即可. Hibernate hql ...