当前位置: 首页 > news >正文

JavaScript常用数组元素搜索或过滤的四种方法

  1. 获取满足特定条件的数组中的所有项目
  2. 要检查是否满足条件?
  3. 检查数组中是否有特定值?
  4. 在数组中找到指定值的索引?

filter   find  includes   indexOf

Array.filter()

在数组中查找满足特定条件的元素

let newArray = array.filter(callback);

  • newArray是返回的新数组
  • array 是我们要进行查找的数组本身
  • callback 是应用于数组每个元素的回调函数

如果数组中没有项目符合条件,则返回一个空数组。

例如,如果我们要获取大于10的数字数组中的所有项目,则可以执行以下操作:

const array = [10, 11, 3, 20, 5];
const greaterThanTen = array.filter(element => element > 10);
console.log(greaterThanTen) //[11, 20]

Array.find()

查找满足特定条件的第一个元素

let element = array.find(callback);

  • element -当前被遍历的元素(必填)
  • index -当前遍历的元素的索引/位置(可选)
  • array- 当前数组(可选)

但是请注意,如果数组中没有项目符合条件,则返回 undefined

const array = [10, 11, 3, 20, 5];
const greaterThanTen = array.find(element => element > 10);
console.log(greaterThanTen)//11

Array.includes()

确定数组是否包含某个值,并在适当时返回 true 或 false

const includesValue = array.includes(valueToFind, fromIndex)

  • valueToFind 是要在数组中检查的值(必填)
  • fromIndex 是要开始从中搜索元素的数组中的索引或位置(可选)
检查20是否为数组中的元素之一,则可以执行以下操作:

const array = [10, 11, 3, 20, 5];
const includesTwenty = array.includes(20);
console.log(includesTwenty)//true



如果要检查数组是否在第一个元素之外的其他位置包含10个,可以执行如下操作:

const array = [10, 11, 3, 20, 5];
const includesTenTwice = array.includes(10, 1);
console.log(includesTenTwice)//false

Array.indexOf()

返回可以在数组中找到给定元素的第一个索引。如果数组中不存在该元素,则返回 -1

const indexOfElement = array.indexOf(element, fromIndex)

  • element 是要在数组中检查的元素(必填),并且
  • fromIndex 是要从数组中搜索元素的启始索引或位置(可选)

请务必注意,includes 和 indexOf 方法都使用严格的相等性('===')搜索数组。如果值的类型不同(例如4'4'),它们将分别返回 false 和 -1

让我们找到数组中 3 的索引。

const array = [10, 11, 3, 20, 5];
const indexOfThree = array.indexOf(3);
console.log(indexOfThree)//2

结语

无需使用 for 循环即可搜索数组

  • 如果你想找到在符合特定条件的阵列中的所有项目,使用 filter
  • 如果你想检查是否至少有一个项目符合特定的条件,请使用 find
  • 如果你想检查一个数组包含一个特定的值,请使用 includes
  • 如果要在数组中查找特定项目的索引,请使用indexOf 

相关文章:

  • java计算机毕业设计无极服装出租管理系统源码+系统+数据库+lw文档+mybatis+运行部署
  • 【算法题解】Codeforces Round #817 (Div. 4)题解
  • 【打工人摸鱼系列】python做皮卡丘桌宠,工作都有效率了呢
  • 手写模拟spring扫描底层实现
  • 照片拼图软件哪个好?快来看看这几个软件
  • 力扣打卡之合并两个有序数组
  • 通过划分法优化共识算法-“Scaling Replicated State Machines with Compartmentalization”详解
  • C#进阶04——委托和事件
  • MySQL数据库 增删查改案例讲解
  • 【面试入门必刷】算法入门-数据结构-栈(一)
  • 《论文复现》MOJITALK: Generating Emotional Responses at Scale 部分过程讲解
  • GBase 8s 安全性(6)- 备份与恢复
  • 【人工智能】神经网络八股扩展
  • 如何获取大数据行业高薪岗位offer?
  • mac mongodb6.0.1安装
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • JavaScript 一些 DOM 的知识点
  • JavaScript实现分页效果
  • Laravel Telescope:优雅的应用调试工具
  • php面试题 汇集2
  • React-redux的原理以及使用
  • sessionStorage和localStorage
  • 浮动相关
  • 工程优化暨babel升级小记
  • 基于 Babel 的 npm 包最小化设置
  • 技术发展面试
  • 学习ES6 变量的解构赋值
  • 在weex里面使用chart图表
  • 主流的CSS水平和垂直居中技术大全
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (k8s中)docker netty OOM问题记录
  • (ZT)出版业改革:该死的死,该生的生
  • (编译到47%失败)to be deleted
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (转载)OpenStack Hacker养成指南
  • .a文件和.so文件
  • .htaccess 强制https 单独排除某个目录
  • .NET 4.0中的泛型协变和反变
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET Core 成都线下面基会拉开序幕
  • .Net Web窗口页属性
  • .net中我喜欢的两种验证码
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • []指针
  • [20150904]exp slow.txt
  • [20161101]rman备份与数据文件变化7.txt
  • [Android View] 可绘制形状 (Shape Xml)
  • [BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务
  • [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
  • [error] 17755#0: *58522 readv() failed (104: Connection reset by peer) while reading upstream