判断数组成员的几种方法

简介: 在开发中经常需要我们在数组中查找元素又或者是判断元素是否存在,所以我列举了几种常用的方法供掘友参考学习。

在开发中经常需要我们在数组中查找元素又或者是判断元素是否存在,所以我列举了几种常用的方法供掘友参考学习。

indexOf()

首先想到的就是indexOf()方法,查找元素,并返回第一个找到的位置索引

[1,2,3,2].indexOf(2)  // 1
复制代码

他还支持第二个可选参数,指定开始查找的位置

[1,2,3,2].indexOf(2,2)  // 3
复制代码

但是indexOf()有个问题,他的实现是由===作为判断的,所以这容易造成一些问题,比如他对于NaN会造成误判

[NaN].indexOf(NaN) // -1
console.log(NaN === NaN) // false
复制代码

如上,由于误判,没有找到匹配元素,所以返回-1,而在ES6对数组的原型上新增了incudes()方法,他可以代替indexOf(),下面来看看这个方法。

includes()

在ES6之前只有字符串的原型上含有include()方法来判断是否包含字串,而数组在ES6中也新增了include()方法来判断是否包含某个元素,下面来看看如何使用。

[1,2,3].includes(2) // true
复制代码

数组实例直接调用,参数为要查找的目标元素,返回值为布尔值。而且他能很好地解决indexOf()的问题:

[NaN].includes(NaN) // true
复制代码

如上includes()可以正确地判断NaN的查找问题,而includes()是用来判断是否包含,查找条件也比较单一,那么如果想要自定义查找条件,比如查找的范围,可以使用这么一对方法:find()与findIndex()接下来看一看他们是如何使用的。

find()与findIndex()

find()findIndex()可以匹配数组符合条件的元素

find()

find()支持三个参数,分别为valueindexarr,分别为当前值,当前位置,与原数组,,返回值为符号条件的值

let arr = [1,2,10,6,19,20]
arr.find((value,index,arr) => {
    return value > 10
}) // 19
复制代码

如上,我以元素大于10为范围条件,返回了第一个符合范围条件的值:19。而find()可以返回符合条件的第一个元素,那么我们要是想拿到符合条件的第一个元素索引就可以使用findIndex()

findIndex()

findIndex()find相似也支持三个参数,但是返回值不同,其返回的是符合条件的索引

let arr = [1,2,10,6,19]
arr.findIndex((value,index,arr) => {
    return value > 10
}) // 4
复制代码

例子与find()相同,返回的是19对应的索引

对于NaN值

find()findIndex()NaN值也不会误判,可以使用Object.is()来作为范围条件来判断NaN值,如下

[NaN].find((value)=> {
    return Object.is(NaN,value)
}) // NaN
复制代码

如上例子,findIndex()也同理

最后

判断元素在某数组中是否存在的四种方法就说到这里


相关文章
|
C# Android开发 虚拟化
C# 一分钟浅谈:MAUI 跨平台移动应用开发
.NET MAUI 是 Microsoft 推出的跨平台框架,支持 Windows、macOS、iOS 和 Android。本文从基础概念入手,探讨 MAUI 的常见问题、易错点及解决方案,并通过代码示例详细说明。涵盖平台特定代码、XAML 语法、数据绑定、性能优化和调试技巧等内容,帮助开发者更好地掌握 .NET MAUI。
1254 55
|
Oracle 关系型数据库 Linux
|
6天前
|
云安全 人工智能 算法
以“AI对抗AI”,阿里云验证码进入2.0时代
三层立体防护,用大模型打赢人机攻防战
1359 7
|
3天前
|
存储 弹性计算 应用服务中间件
2026年阿里云服务器新手租用全流程完整步骤教程(最新版)
2026年阿里云服务器新手租用全流程完整步骤教程,阿里云服务器提供自定义租用、一键租用、云市场租用和活动租用四种核心方式,适配不同配置需求、技术能力和预算场景。无论是需要精准配置的专业用户,还是追求快速部署的新手,都能找到合适的租用方案。以下是详细的适用场景和操作流程,助力高效上云。
288 148
|
7天前
|
人工智能 Rust 运维
这个神器让你白嫖ClaudeOpus 4.5,Gemini 3!还能接Claude Code等任意平台
加我进AI讨论学习群,公众号右下角“联系方式”文末有老金的 开源知识库地址·全免费
|
3天前
|
人工智能 弹性计算 运维
2026年阿里云建站费用解读:三种方案价格明细、功能特性及选型建议
阿里云建站费用多少?2026年阿里云建站费用解读:三种方案价格明细、功能特性及选型建议。在数字化需求日益增长的当下,搭建网站成为个人展示、企业推广的重要途径。阿里云作为主流云服务提供商,针对不同技术基础与业务规模,推出 “自购服务器建站”“万小智 AI 模板建站”“云企业官网定制建站” 三种核心方案,价格从 38 元 / 年到数万元 / 年不等,覆盖从个人到中大型企业的全场景需求。本文基于今年最新官方定价与实测数据,从方案细节、价格体系、功能对比、场景适配等维度展开解析,为用户提供客观选型参考。
258 154
|
6天前
|
机器学习/深度学习 安全 API
MAI-UI 开源:通用 GUI 智能体基座登顶 SOTA!
MAI-UI是通义实验室推出的全尺寸GUI智能体基座模型,原生集成用户交互、MCP工具调用与端云协同能力。支持跨App操作、模糊语义理解与主动提问澄清,通过大规模在线强化学习实现复杂任务自动化,在出行、办公等高频场景中表现卓越,已登顶ScreenSpot-Pro、MobileWorld等多项SOTA评测。
832 4
|
13天前
|
编解码 人工智能 自然语言处理
⚽阿里云百炼通义万相 2.6 视频生成玩法手册
通义万相Wan 2.6是全球首个支持角色扮演的AI视频生成模型,可基于参考视频形象与音色生成多角色合拍、多镜头叙事的15秒长视频,实现声画同步、智能分镜,适用于影视创作、营销展示等场景。
846 14