一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

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() 可快速做存在性或全量判断

不复杂但容易忽略细节,用对方法才能少踩坑、少写冗余逻辑。

热门栏目