JavaScript 中搜索数组元素的四种方法
lipiwang 2025-05-25 13:58 3 浏览 0 评论
在实际开发当中,我们经常会遇到类似诸如下面的需求:
- 获取满足特定条件的数组中的所有项目
- 要检查是否满足条件?
- 检查数组中是否有特定值?
- 在数组中找到指定值的索引?
在本文中,我们将讨论四种可用于搜索数组中项目的方法。这些方法是:
- filter
- find
- includes
- indexOf
接下来,我们就一起来看一下这四种方式
Array.filter()
我们可以使用 Array.filter() 方法在数组中查找满足特定条件的元素。
例如,如果我们要获取大于10的数字数组中的所有项目,则可以执行以下操作:
const array = [10, 11, 3, 20, 5];
const greaterThanTen = array.filter(element => element > 10);
console.log(greaterThanTen) //[11, 20]
使用 array.filter() 方法的语法如下:
let newArray = array.filter(callback);
着这里:
- newArray是返回的新数组
- array 是我们要进行查找的数组本身
- callback 是应用于数组每个元素的回调函数
如果数组中没有项目符合条件,则返回一个空数组。
有时,我们不需要满足特定条件的所有元素。我们只需要一个符合条件的元素。在这种情况下,需要使用find()方法。
Array.find()
使用 Array.find()方法查找满足特定条件的第一个元素。就像 filter 方法一样,它以回调为参数,并返回满足回调条件的第一个元素。
我们尝试一下在上面的示例中对数组使用 find 方法。
const array = [10, 11, 3, 20, 5];
const greaterThanTen = array.find(element => element > 10);
console.log(greaterThanTen)//11
array.find() 的语法为
let element = array.find(callback);
callback 是在数组中的每个值上执行的函数,带有三个参数:
- element -当前被遍历的元素(必填)
- index -当前遍历的元素的索引/位置(可选)
- array- 当前数组(可选)
但是请注意,如果数组中没有项目符合条件,则返回 undefined。
但是,如果想检查某个元素是否在数组中怎么办?
Array.includes()
includes() 方法确定数组是否包含某个值,并在适当时返回 true 或 false。
因此,在上面的示例中,如果我们要检查20是否为数组中的元素之一,则可以执行以下操作:
const array = [10, 11, 3, 20, 5];
const includesTwenty = array.includes(20);
console.log(includesTwenty)//true
你会注意到此方法与其他方法之间的区别。此方法接受值而不是回调作为参数。这是 include 方法的语法:
const includesValue = array.includes(valueToFind, fromIndex)
- valueToFind 是要在数组中检查的值(必填)
- fromIndex 是要开始从中搜索元素的数组中的索引或位置(可选)
要了解索引的概念,让我们再次使用上面的示例。
如果要检查数组是否在第一个元素之外的其他位置包含10个,可以执行如下操作:
const array = [10, 11, 3, 20, 5];
const includesTenTwice = array.includes(10, 1);
console.log(includesTenTwice)//false
Array.indexOf()
indexOf() 方法返回可以在数组中找到给定元素的第一个索引。如果数组中不存在该元素,则返回 -1。
回到例子。让我们找到数组中 3 的索引。
const array = [10, 11, 3, 20, 5];
const indexOfThree = array.indexOf(3);
console.log(indexOfThree)//2
其语法类似于该 includes 方法的语法。
const indexOfElement = array.indexOf(element, fromIndex)
- element 是要在数组中检查的元素(必填),并且
- fromIndex 是要从数组中搜索元素的启始索引或位置(可选)
请务必注意,includes 和 indexOf 方法都使用严格的相等性('===')搜索数组。如果值的类型不同(例如4和'4'),它们将分别返回 false 和 -1。
总结
使用这些数组方法,无需使用 for 循环即可搜索数组。根据您的需求,您可以决定哪种方法最适合您的用例。
以下是何时使用每种方法的摘要:
- 如果你想找到在符合特定条件的阵列中的所有项目,使用 filter。
- 如果你想检查是否至少有一个项目符合特定的条件,请使用 find。
- 如果你想检查一个数组包含一个特定的值,请使用 includes。
- 如果要在数组中查找特定项目的索引,请使用indexOf 。
相关推荐
- Qwen上新AI前端工程师!一句话搞定HTML/CSS/JS,秒变React大神
-
梦晨发自凹非寺量子位|公众号QbitAIQwen上新“AI前端工程师”WebDev,一句话开发网页应用。三大件HTML,CSS,JavaScript一个工具全包了,定睛一看用的还是Reac...
- 程序员的 JavaScript 代码该如何让计算机搞懂?
-
出自程序员之手的JavaScript代码,该如何变成计算机所能理解的机器语言呢?本文将带你走进JavaScript引擎内部,一探究竟。作者|LydiaHallie译者|弯月,责编|...
- JavaScript:如何优雅的创建数组?
-
在JavaScript里,有多种方式可以创建数组,下面为你详细介绍:1.使用数组字面量这是最常用的创建数组的方法,使用方括号[]来创建数组。//创建一个空数组letemptyArray...
- Jquery 详细用法
-
1、jQuery介绍(1)jQuery是什么?是一个js框架,其主要思想是利用jQuery提供的选择器查找要操作的节点,然后将找到的节点封装成一个jQuery对象。封装成jQuery对象的目的有...
- HTML页面基本结构和加载过程
-
大家好,我是皮皮。前言对于前端来说,HTML都是最基础的内容。今天,我们来了解一下HTML和网页有什么关系,以及与DOM有什么不同。通过本讲内容,你将掌握浏览器是怎么处理HTML内容的,...
- 【HarmonyOS Next之旅】兼容JS的类Web开发(一)
-
目录1->概述1.1->整体架构2->文件组织2.1->目录结构2.2->文件访问规则2.3->媒体文件格式3->js标签配置3....
- JavaScript初学者指南
-
如果你刚接触JavaScript,想必已经被“modulebundlersvs.moduleloaders”、“Webpackvs.Browserify”和“AMDvs.Common...
- 前端图片延迟加载详细讲解
-
原文链接:http://www.gbtags.com/gb/share/6366.htm?原本是打算昨天昨天下午的时候就写一篇关于前端图片延迟加载的详细技术的博客的,没想到下午公司项目出现了一些问题...
- selenium:操作滚动条的方法(8)
-
selenium支持几种操作滚动条的方法,主要介绍如下:使用ActionChains类模拟鼠标滚轮操作使用函数ActionChains.send_keys发送按键Keys.PAGE_DOWN往下滑动...
- jQuery 获取和设置HTML元素
-
jQuery中包含更改和操作HTML元素和属性的强大方法。我们可以通过这些方法来获取HTML元素中的文本内容、元素内容(例如HTML标签)、属性值等。text()方法text()方法可以用...
- JavaScript脚本如何断言select下拉框的元素内容?
-
使用JavaScript脚本断言select下拉框的元素内容,需要考虑页面元素是否加载成功,出错时打印等,主要实现功能功能需包括如下几点:1.等待下拉框元素加载完成(支持超时设置)2.获取下...
- JavaScript图片或者div拖动拖动函数的实现
-
/**拖动图片封装html格式:<imglay-src="${item.Resourcesurl}"alt="${item.ResourcesName}"...
- JavaScript代码怎样引入到HTML中?
-
JavaScript程序不能独立运行,它需要被嵌入HTML中,然后浏览器才能执行JavaScript代码。通过<script>标签将JavaScript代码引入到HTM...
- 当你在Vue.js中想要隐藏 `` 标签时,可以这样做:
-
在Vue.js里,要是你想要搞掉`<br>`(换行)标签的效果,通常有几种路子:1.使用CSS嗯,最简单的办法就是用CSS搞定,控制元素的样式,让<br>标签彻底不显示...
- php手把手教你做网站(三十)上传图片生成缩略图
-
三种方法:按比例缩小、图片裁切、预览图片裁切不管使用哪一个都是建立在图片已经上传的基础上;预览裁切上传,如果预览的图片就是原始大小,可以预览裁切以后上传(这里是个假象,下边会说明);1、上传以后按比例...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- maven镜像 (69)
- undefined reference to (60)
- zip格式 (63)
- oracle over (62)
- date_format函数用法 (67)
- 在线代理服务器 (60)
- shell 字符串比较 (74)
- x509证书 (61)
- localhost (65)
- java.awt.headless (66)
- syn_sent (64)
- settings.xml (59)
- 弹出窗口 (56)
- applicationcontextaware (72)
- my.cnf (73)
- httpsession (62)
- pkcs7 (62)
- session cookie (63)
- java 生成uuid (58)
- could not initialize class (58)
- beanpropertyrowmapper (58)
- word空格下划线不显示 (73)
- jar文件 (60)
- jsp内置对象 (58)
- makefile编写规则 (58)