最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
JavaScript 数组查找元素的多种方法对比
时间:2026-07-12 11:02:56 编辑:袖梨 来源:一聚教程网
JavaScript数组查找方法需按需求选择:includes()用于布尔判断,indexOf()/lastIndexOf()返回索引,find()/findIndex()支持回调找首个匹配项,filter()返回所有匹配元素。
JavaScript 中查找数组元素,方法不少,关键看你要什么结果:是找第一个匹配项、所有匹配项、还是只要判断存不存在?不同场景适合不同方法,选错了可能多写代码还出错。
用 includes() 判断是否存在
最简单直接的布尔判断,适合“有没有”这种需求。它不关心位置、不返回元素,只告诉你 true 或 false。
- 对 NaN 也有效(
[NaN].includes(NaN)返回 true,而indexOf不行) - 不能传回调函数,只能做严格相等(
===)比较 - 不支持对象的深比较,比如
[{a:1}].includes({a:1})是 false
用 indexOf() 和 lastIndexOf() 找索引
返回第一个/最后一个匹配项的索引,没找到返回 -1。适合需要知道位置的场景,比如后续要 splice 或修改该位置元素。
-
indexOf从头开始找,lastIndexOf从末尾开始找 - 同样只支持严格相等,对 NaN 返回 -1
- 可以指定起始搜索位置(第二个参数),做分段查找
用 find() 和 findIndex() 按条件查找
支持传入回调函数,能做复杂判断(比如对象属性匹配、范围筛选),是日常开发中最常用的一对。
立即学习“Java免费学习笔记(深入)”;
-
find()返回第一个满足条件的元素值;没找到返回undefined -
findIndex()返回对应索引;没找到返回-1 - 遇到第一个 true 就停止,不会遍历全部(短路执行)
- 注意:空数组上调用
find也返回undefined,别忘了判空处理
用 filter() 找出所有匹配项
当你需要全部符合条件的元素(不止一个),就用 filter。它返回一个新数组,原数组不变。
- 即使只有一个匹配项,也返回数组(不是单个值),使用时注意解构或取
[0] - 始终遍历整个数组,没有短路,性能上比
find略低(但语义更清晰) - 配合
some()或every()可快速做存在性或全量判断
不复杂但容易忽略细节,用对方法才能少踩坑、少写冗余逻辑。
相关文章
- jm天堂漫画官网入口-iOS版 07-17
- 忘川风华录幽墟通关攻略 幽墟5市隐怎么配队通关 07-17
- CentOS readdir命令的替代方案有哪些 07-17
- CentOS readdir命令在脚本里的应用 07-17
- CentOS readdir命令返回值意义 07-17
- CentOS如何开展系统故障排查 07-17