TypedArray.prototype.find()

如果某个元素满足所提供的测试函数, find() 方法返回类型化数组中的 值 。否则返回 undefined 。 TypedArray 是这里的类型化数组类型之一。

同时请参见 findIndex() 方法,它返回了类型化数组中所发现元素的 下标 ,而不是它的值。

语法

typedarray.find(callback[, thisArg])

参数

callback
用于在类型化数组中的每个元素上执行的函数,接受三个参数:
element
要处理的类型化数组的当前元素。
index
要处理的当前元素在类型化数组中的下标
array
find 在其上调用的类型化数组
thisArg
可选,执行 callback 时的 this 值。

返回值

如果元素通过了测试,则为该元素,否则为 undefined 。

描述

find 方法对类型化数组中的每个元素执行一次 callback 函数,直到它找到一个使 callback 返回 true 的元素。如果发现了一个这样的元素, find 方法将会立即返回该元素的值。否则, find 方法会返回 undefined 。 callback 只会对那些已经被赋值的索引调用。不会对那些被删除或从来没被赋值的索引调用。

callback 以三个参数调用:元素的值,元素索引,以及要遍历的数组对象。

如果将 thisArg 参数提供给 find ,它会在调用时传递给 callback ,作为它的 this 值。如果没有提供,会使用 undefined 。

find 不修改在其上调用的类型化数组。

由 find 处理的元素范围在 callback 调用之前就确定了。在 find 调用之后添加到数组的元素不会由 callback 访问。如果类型化数组的现有元素被改变,或被删除,它们传给 callback 的值是 find 访问它们时候的值。已删除的元素不会被访问。

示例

在类型化数组中寻找质数

下面的示例在类型化数组中寻找质数(如果没有质数则返回 undefined )。

function isPrime(element, index, array) {
  var start = 2;
  while (start <= Math.sqrt(element)) {
    if (element % start++ < 1) {
      return false;
    }
  }
  return element > 1;
}

var uint8 = new Uint8Array([4, 5, 8, 12]);
console.log(uint8.find(isPrime)); // 5