findindex 是用于查找数组中第一个满足条件元素索引的纯函数方法,未找到返回-1;接收回调函数(当前元素、索引、原数组),返回真值即终止并返回索引;不修改原数组,适用于“找首个登录用户”等场景;区别于 find(返回元素)和 indexof(仅严格相等)。

findIndex 是数组方法,用于查找第一个满足条件的元素的索引,没找到返回 -1。
基本用法:传入回调函数
回调函数接收三个参数:当前元素、索引、原数组。只要回调返回真值(truthy),就停止遍历并返回当前索引。
- 写法简洁:不需要手动 for 循环和 break
- 只找第一个匹配项,适合“找首个登录用户”“找第一个未提交订单”等场景
- 不修改原数组,纯查找操作
常见使用示例
比如查找数组中第一个大于 10 的数的索引:
const index = arr.findIndex(x => x > 10); // 返回 2
查找对象数组中某个属性匹配的索引:
const users = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 3, name: 'Charlie'}];const idx = users.findIndex(user => user.name === 'Bob'); // 返回 1
注意边界情况
空数组或无匹配项时,findIndex 明确返回 -1,不是 undefined 或 false,所以判断时建议用 index !== -1:
- 别写
if (index)—— 索引 0 是 falsy,会误判 - 可以配合三元或逻辑运算做默认处理,例如:
const result = arr.findIndex(...) !== -1 ? 'found' : 'not found'; - 如果需要所有匹配索引,得用 map + filter 或 reduce,findIndex 不支持
与 find、indexOf 的区别
findIndex 和 find 成对出现:一个返回索引,一个返回元素本身;indexOf 只能做严格相等(===)查找,不支持复杂条件。
- 要找值为 'apple' 的位置 → 可用
arr.indexOf('apple') - 要找 price > 100 的商品索引 → 必须用
arr.findIndex(item => item.price > 100) - 要同时拿到元素和索引?用
findIndex得索引,再用arr[index]获取元素,或直接用find+ 额外记录索引
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











