📜  JavaScript | typedArray.findIndex() 与示例(1)

📅  最后修改于: 2023-12-03 15:31:39.349000             🧑  作者: Mango

JavaScript | typedArray.findIndex() 与示例

简介

typedArray.findIndex() 方法搜索数组中满足条件的元素,返回其在数组中的索引。该方法使用二进制搜索算法,因此数组必须事先按升序排序。

typedArray.findIndex() 方法与数组的 findIndex() 方法类似,但它是为 TypedArray 类型数组设计的。

语法
typedArray.findIndex(callback)
参数
  • callback:在数组中每个元素上调用的回调函数,接收三个参数:
    • currentValue:当前元素的值
    • index:当前元素的索引
    • array:数组对象本身
返回值
  • 如果在数组中找到满足条件的元素,则返回该元素在数组中的索引。
  • 如果没有找到满足条件的元素,则返回 -1。
示例
查找元素
const typedArray = new Int8Array([-1, 0, 1, 2, 3]);

const index = typedArray.findIndex((currentValue, index, array) => {
  return currentValue === 2;
});

console.log(index); // 3

上面的代码创建了一个 Int8Array 类型的数组,并使用 typedArray.findIndex() 方法查找值为 2 的元素。因为 2 在数组中的索引为 3,因此返回值为 3

没有找到元素
const typedArray = new Int8Array([-1, 0, 1, 2, 3]);

const index = typedArray.findIndex((currentValue, index, array) => {
  return currentValue === 4;
});

console.log(index); // -1

上面的代码创建了一个 Int8Array 类型的数组,并使用 typedArray.findIndex() 方法查找值为 4 的元素。因为数组中不存在值为 4 的元素,因此返回值为 -1

二分搜索算法

由于 typedArray.findIndex() 方法使用二分搜索算法,因此数组必须事先按升序排序。下面是一个排序后的示例:

const typedArray = new Int8Array([-1, 0, 1, 2, 3]);

// 将数组按升序排序
typedArray.sort((a, b) => a - b);

const index = typedArray.findIndex((currentValue, index, array) => {
  return currentValue === 2;
});

console.log(index); // 2

上面代码中,typedArray.sort((a, b) => a - b) 对数组进行升序排序。然后使用 typedArray.findIndex() 方法查找值为 2 的元素。由于该方法使用二分搜索算法,因此返回值为 2,而不是上面的 3