findIndex用于查找数组中第一个满足条件元素的索引,找到返回索引值,未找到返回-1;支持函数判断、对象属性匹配、NaN识别,比indexOf、find、filter更精准高效。

findIndex 就是用来获取目标元素在数组中第一个匹配项的索引位置的方法。它不找值,只找下标,找到就立刻返回索引,没找到就返回 -1。
findIndex 的基本用法
调用格式:
arr.findIndex(callback)
callback 是一个函数,接收三个参数:
-
item:当前遍历的元素 -
index:当前元素的索引 -
array:原数组(可选,一般不用)
只要 callback 返回 true,findIndex 就停止遍历,并返回此时的 index。
用于 inference.sh 的 JavaScript/TypeScript SDK,可运行 AI 应用、构建代理、集成 150+ 模型。包名:@inferencesh/sdk(npm install),完整 TypeScript 支持。
例如:
const nums = [10, 20, 30, 40, 30]; const idx = nums.findIndex(item => item === 30); console.log(idx); // 2(不是 4,只取第一个匹配的位置)
查找对象数组中的某个对象索引
常见于后台返回用户列表、商品列表等场景:
const users = [
{ id: 101, name: '小明' },
{ id: 205, name: '小红' },
{ id: 307, name: '小刚' }
];
const targetIndex = users.findIndex(user => user.id === 205);
console.log(targetIndex); // 1注意几个关键点
- 返回
-1表示没找到,不是undefined(这点和find()返回undefined不同) - 只返回第一个匹配项的索引,后续相同条件的不会继续查
- 空数组调用
findIndex,回调函数根本不会执行,直接返回-1 - 支持用
Object.is()处理NaN这类特殊值:const arr = [1, 2, NaN, 4]; const nanIdx = arr.findIndex(item => Object.is(item, NaN)); console.log(nanIdx); // 2
和其他查找方法对比
-
indexOf():只能查原始值(如数字、字符串),不能写条件逻辑 -
find():返回的是元素本身,不是索引 -
filter().indexOf(...):先生成新数组再查,效率低且不直观
直接用 findIndex 更简洁、语义清晰、性能也好。

















