ES7 中的 Array.prototype.findIndex 函数详解

JavaScript 是一种面向对象、基于原型和事件驱动的编程语言,被广泛应用于前端开发、游戏开发等领域。而在 ECMAScript 7 中,新增了 Array.prototype.findIndex 函数,它可以快速准确地找出数组元素中第一个符合条件的索引值,下面我们来详细了解一下这个函数。

简介

Array.prototype.findIndex 是 ES7 新增的方法,它与 Array.prototype.find 函数类似,但返回的是该元素在数组中的索引值,而不是元素本身。findIndex 函数接受一个回调函数作为参数,遍历数组元素,并对每个元素执行一次该回调函数,如果该回调函数返回 true,则返回该元素在数组中的索引值。如果数组中没有符合条件的元素,则返回 -1。

语法

Array.prototype.findIndex(callback(element[, index[, array]])[, thisArg])

参数

参数 描述
callback 要执行的回调函数,该函数接受3个参数:当前元素、索引、数组本身。
thisArg 可选参数。执行回调函数时,this 的值。

返回值

符合条件的第一个元素的索引值。

例子

下面的代码演示了如何使用 findIndex 函数查找数组中第一个大于 10 的元素的索引值:

const arr = [5, 12, 8, 23, 17];

const index = arr.findIndex((el) => el > 10);

console.log(index); // 输出 1

在这个例子中,回调函数 (el) => el > 10 返回了 true 值,因此 findIndex 函数返回的是符合条件的第一个元素的索引值 1。

还可以传入第二个参数指定回调函数执行时的 this 指向:

const obj = {
  min: 10,
  max: 20,
};

const arr = [5, 12, 8, 23, 17];

const index = arr.findIndex(function (el) {
  return el > this.min && el < this.max;
}, obj);

console.log(index); // 输出 4

在这个例子中,回调函数内部使用 this.min 和 this.max 访问了外部的 obj 对象,使用第二个参数将 obj 对象传递给了 findIndex 函数,从而保持了 this 指针的正确性。

总结

Array.prototype.findIndex 函数是 ES7 新增的方法,用于查找数组元素中第一个符合条件的索引值。它接受一个回调函数作为参数,该函数的返回值为布尔类型。如果该函数返回 true,则返回该元素在数组中的索引。如果数组中没有符合条件的元素,则返回 -1。同时,findIndex 函数也支持通过第二个参数指定执行回调函数时的 this 指向。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65937de5eb4cecbf2d8358d7


纠错反馈