跳到主要内容

JavaScript 数组的 findIndex() 方法详解

findIndex() 方法返回数组中第一个满足提供的测试函数的元素的索引,如果没有满足条件的元素则返回 -1。

示例

// 返回奇数的函数
function isOdd(element) {
return element % 2 !== 0;
}

// 定义一个整数数组
let numbers = [2, 8, 1, 3, 4];

// 返回数组中第一个奇数的索引
let firstOdd = numbers.findIndex(isOdd);

console.log(firstOdd);

// 输出:2

findIndex() 语法

findIndex() 方法的语法为:

arr.findIndex(callback(element, index, arr), thisArg);

这里,arr 是一个数组。

findIndex() 参数

findIndex() 方法可以接受 两个 参数:

  • callback - 在数组的每个元素上执行的函数。它接受:

  • element - 数组的当前元素。

thisArg(可选)- 用作 callback 内的 this 的对象。

findIndex() 返回值

  • 如果有元素满足给定函数,则返回 第一个元素 在数组中的 索引
  • 如果没有元素满足函数,则返回 -1

示例 1:使用 findIndex() 方法

// 返回偶数的函数
function isEven(element) {
return element % 2 == 0;
}

// 定义一个整数数组
let numbers = [1, 45, 8, 98, 7];

// 返回数组中第一个偶数的索引
let firstEven = numbers.findIndex(isEven);

console.log(firstEven); // 2

输出

2

在上面的示例中,我们使用 findIndex() 方法找到 numbers 数组中第一个偶数的索引。

isEven() 是一个返回偶数的函数。我们将 isEven() 作为回调传递给 findIndex() 方法,即 numbers.findIndex(isEven)

该方法返回 2,即 numbers 中第一个偶数 8 的索引。

示例 2:带箭头函数的 findIndex()

// 定义一个数组
let days = ["Sunday", "Wednesday", "Tuesday", "Friday"];

// 返回数组中 'Wednesday' 的第一个索引
let index = days.findIndex((day) => day === "Wednesday");

console.log(index); // 1

输出

1

在这里,我们在 findIndex() 方法中传递了一个箭头函数作为回调。该方法返回 'Wednesday' 的第一个索引。

示例 3:findIndex() 用于对象元素

// 定义一个对象
const team = [
{ name: "Bill", age: 10 },
{ name: "Linus", age: 15 },
{ name: "Alan", age: 20 },
{ name: "Steve", age: 34 },
];

// 返回年龄大于或等于 18 的函数
function isAdult(member) {
return member.age >= 18;
}

// 返回第一个年龄大于或等于 18 的元素的索引
console.log(team.findIndex(isAdult)); // 2

输出

2

推荐阅读: JavaScript Array find()