findIndex是数组方法,返回首个满足条件元素的索引,未找到则返回-1;接收回调函数判断条件,支持thisArg绑定,仅返回第一个匹配项索引。

findIndex 是数组的内置方法,用于查找第一个满足指定条件的元素的索引。如果没找到,返回 -1。
基本用法和语法
它接收一个回调函数作为参数,该函数对每个元素执行判断,返回 true 时即停止遍历并返回当前索引:
const index = arr.findIndex(callback(element[, index[, array]]) [, thisArg]);
其中:
- element:当前遍历的元素
- index(可选):当前元素的索引
- array(可选):原数组本身
- thisArg(可选):指定回调函数中 this 的值
常见使用场景示例
- 查找第一个大于 10 的数字索引:
const numbers = [2, 5, 8, 12, 15]; const idx = numbers.findIndex(n => n > 10); // 返回 3
- 查找对象数组中某个属性匹配的对象索引:
const users = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' }
];
const idx = users.findIndex(u => u.name === 'Bob'); // 返回 1- 结合索引或数组本身做更复杂的判断:
const arr = ['a', 'b', 'c', 'b']; const idx = arr.findIndex((item, i, arr) => item === 'b' && i > 0); // 返回 3(第二个 'b')
注意点和易错情况
- 只返回第一个匹配项的索引,不会继续找后续匹配项
- 回调函数必须明确返回布尔值;返回非布尔值(如字符串、对象)会被强制转为布尔,可能导致误判
- 空数组调用
findIndex始终返回-1 - 不改变原数组,是纯函数式操作
与 find / indexOf 的区别
-
findIndex返回索引;find返回元素本身;indexOf只支持严格相等(===),不能传入复杂条件 - 需要索引且条件较灵活时,优先用
findIndex;只需要判断是否存在某值,简单相等可用indexOf或includes


















