1. find()与findIndex()方法
let arr = [1, 2, undefined, '听风是风', 'echo'];//利用indexOf查找下标的特性
let result = arr.find(ele => ele === '听风是风')//听风之风
if (result) {//do something...
};

find方法是比较推荐的做法,find方法会找到第一个符合条件的数组元素,并返回它,如果没找到则返回undefined。

需要注意的是,只要find找到符合条件的对象后不会继续遍历,可以说自带了break操作,加上箭头函数简化回调,整体代码非常直观。

let arr = [1, 2, undefined, '听风是风', 'echo'];//利用indexOf查找下标的特性
let result = arr.findIndex(ele => ele === '听风是风')//3
if (result>-1) {//do something...
};

findIndex方法与find方法非常类似,只是它返回的不是符合条件的对象,而是该对象的下标,找到后同样会跳出循环,如果没找到则返回-1,这一点与indexOf有点类似。

比较理想的是,find方法还能结合Object.is()方法判断NaN,当然也能判断其它对象,是不是非常的nice?

[NaN].find(ele => Object.is(NaN, ele)); //NaN
[1].find(ele => Object.is(1, ele)); //1
[NaN].findIndex(ele => Object.is(NaN, ele)); //0
[1].findIndex(ele => Object.is(1, ele)); //0

写法简洁,自带break,还能判断NaN,这两个方法都比较推荐。

  1. some()方法
let arr = [1, 2, undefined, '听风是风', 'echo'];//利用indexOf查找下标的特性
let result = arr.some(ele => ele === '听风是风') //true
if (result) {//do something...
};

some方法同样用于检测是否有满足条件的元素,如果有,则不继续检索后面的元素,直接返回true,如果都不符合,则返回一个false。

用法与find相似,只是find是返回满足条件的元素,some返回的是一个Boolean值,从语义化来说,是否包含返回布尔值更贴切。

当然,some方法同样能结合Object.is()方法检测NaN。some也是较为推荐的方法

[NaN].some(ele => Object.is(NaN, ele));
  1. includes()方法

ES6新增的数组方法,用于检测数组是否包含某个元素,如果包含返回true,否则返回false,比较厉害的是,能直接检测NaN:

[1, 3, 'echo'].includes('echo'); //true
[NaN, 3, 'echo'].includes(NaN); //true
[1, 3, 'echo'].includes('听风是风'); //false

优点就不用说了,最简单的做法没有之一,不用回调,不用复杂的写法,一个方法直接搞定。

缺点是低版本浏览器支持不是很友好,当然能用我们还是用,不能用我们就自己封装:

let hasEle = (() =>Array.prototype.includes ?(arr, val) => arr.includes(val) :(arr, val) => arr.some(ele => Object.is(val, ele))
)();hasEle([1, 2, NaN], 1) //true
hasEle([1, 2, NaN], NaN) //true
hasEle([1, 2, NaN], '听风是风') //false

JavaScript判断数组是否包含某元素相关推荐

  1. 易语言 判断数组是否包含某元素

    .版本 2.子程序 子程序_判断数组是否包含某元素, 逻辑型 .参数 参_数组, 文本型, 数组 .参数 参_要查找的元素, 文本型 .局部变量 i, 整数型.计次循环首 (取数组成员数 (参_数组) ...

  2. java数组包含某个元素_java中判断数组是否包含某元素的方法

    有两种方法可以判断数组是否包含元素: 方法1, 将数组转换为list,然后使用list的contains方法来判断:Arrays.asList(...).contains(...) java.lang ...

  3. 6种JavaScript判断数组是否包含某个值的方法

    我们在项目开发过程中,经常会要检查一个数组(无序)是否包含一个特定的值?这是一个在JavaScript中经常用到的并且非常有用的操作. 下面给出几种实现方式. 方式一:利用循环 这种方式是比较老的实现 ...

  4. js和jQuery判断数组是否包含指定元素

    最近遇见一些前台基础性问题,在这里笔者觉得有必要记录一下,为了以后自己查阅或者读者查看. 已知var arr = ['java','js','php','C++']; 问题:arr数组是否包含'jav ...

  5. javascript判断数组是否包含了指定的元素

    jQuery写法: var arr = [ "xml", "html", "css", "js" ]; $.inArra ...

  6. 怎么判断数组是否包含某个元素?

    方法一.使用List public static boolean useList(String[] arr, String targetValue) {     return Arrays.asLis ...

  7. 遍历strs数组,并判断数组中每一个元素的长度, * 将长度为偶数的元素和长度为奇数的元素分别存放在两个集合中,

    package Day08;import java.util.ArrayList;/*** 二* 字符串数组strs中包含字符串{"12","345",&quo ...

  8. java数组中包含元素_Java中声明数组时,包括数组的名字、数组中包含的元素的 。 (5.0分)_学小易找答案...

    [简答题]3,单冲压片机的安装程序? [判断题]continue语句只用于循环语句中,它起到终止本次循环,返回到循环开始处的作用. (5.0分) [判断题]default在switch选择结构中是必需 ...

  9. java数组是否包含某字符串_js判断数组是否包含某个字符串变量的实例

    最近碰到一个这样的现象,后台返回的数据中,数组里面有一些有变量值,有一些没有变量值. 举个例子,比如后台返回的例子是这样的: var arr=[ { "status":" ...

  10. JavaScript删除数组里的某个元素

    删除的数组的某一项 splice(index,len,[item]) 注释:该方法会改变原始数组. splice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值 index:数组开始下标 ...

最新文章

  1. AntiXSS - 支持Html同时防止XSS攻击
  2. 电脑python安装库_Python安装第三方库的3种方法 -电脑资料
  3. 设置网页背景图片不显示
  4. 网络安全04_互联网发展史_网线+网卡+协议栈_中继器_集线器_网桥_路由器_AC/AP_防火墙_流控_家庭网络_小型创业公司网络_园区网_政务网络_数据中心网络拓扑_电信网/互联网_Mac地址
  5. charles抓取手机APP,配置正确却抓不到数据
  6. 笨鸟学Android开发(1):HelloWorld
  7. [转载] 字符串最长重复子串python_查找字符串中重复字符的最长子字符串
  8. office2003 office2007同时安装 配置问题的解决
  9. python编写dll文件_.dll 文件编写和使用
  10. Windows2003 企业版支持红外
  11. ccleaner激活后又要注册_ccleaner如何激活? ccleaner注册激活图文步骤
  12. 小O地图EXE版V0.9.5.5 - 功能总览
  13. Squid代理服务器(缓存加速之Web缓存层)
  14. boox android 4.4,纷极阅读app
  15. Python求最大公约数的五种常见方法
  16. 2014美国大学计算机科学专业排名,2014年美国大学计算机科学专业排名.doc
  17. 【零知ESP8266教程】快速入门10-使用PWM进行调光
  18. 小米笔记本pro重装系统和问题汇总
  19. WCHAR我不再惧怕了 - 随感而发 - C++博客
  20. CSS问题:导航栏设置通栏后,放大页面背景显示不全

热门文章

  1. VScode开发51单片机程序
  2. (SCI分区)查SCI期刊JCR分区的图解步骤
  3. 多个pdf怎么合并成一个pdf?如何将几个pdf文件合并成一个pdf?
  4. win10 清理回收站右键
  5. 安科瑞变电站综合自动化系统在变电站的应用-Susie 周
  6. Vue项目里面使用jsmind.js插件来制作思维导图页面完成需求
  7. 京东云的区块链“经”
  8. AD2016 交互式网表 InteractiveHtmlBomForAD插件安装教程
  9. 设计模式第一篇---懒汉模式
  10. 关于研究课题中的技术路线与实施方案