TypedArray.prototype.find()
find()
メソッドは、型付き配列のある要素の値が与えられたテスト関数を満たした場合、その値を返します。そうでなければ undefined
を返します。ここで TypedArray は型付き配列型のうちの一つです。
findIndex()
メソッドも参照してください。こちらはそのメソッドは値のかわりに型付き配列で見つかった要素の添字を返します。
試してみましょう
構文
// アロー関数
find((element) => { /* ... */ } )
find((element, index) => { /* ... */ } )
find((element, index, array) => { /* ... */ } )
// コールバック関数
find(callbackFn)
find(callbackFn, thisArg)
// インラインコールバック関数
find(function(element) { /* ... */ })
find(function(element, index) { /* ... */ })
find(function(element, index, array){ /* ... */ })
find(function(element, index, array) { /* ... */ }, thisArg)
引数
callbackFn
-
型付き配列の要素に対するテストに使用する関数です。
この関数は以下の引数で呼び出されます。
element
-
型付き配列内で現在処理されている要素。
index
-
型付き配列内で現在処理されている要素の位置。
array
-
find()
が呼び出された配列。
thisArg
省略可-
callbackFn
を実行するときにthis
として使用するオブジェクト。
返値
テストを満たした配列の要素の位置を返します。それ以外の場合は、 undefined
を返します。
解説
find()
メソッドは callbackFn
関数が true 値を返す要素を見つけるまで、型付き配列内に存在している各要素に対して一度ずつ callbackFn
関数を実行します。そのような要素が見つかったら、 find()
はすぐに要素の値を返します。さもなければ、 find()
は undefined
を返します。 callbackFn
は型付き配列の値を割り当てた位置に対してのみ呼び出されます。つまり、削除されたり、値が割り当てられて位置に対しては呼び出されません。
callbackFn
は、要素の値、要素の添字、走査中の型付き配列の 3 つの引数とともに呼び出されます。
thisArg
引数が find()
に与えられた場合、 callbackFn
の各呼び出しで this
として使用されます。与えられなかった場合は、 undefined
が使用されます。
find()
は呼び出されている型付き配列を変更しません。
find()
によって処理される要素の範囲は、最初に callbackFn
が呼び出される前に設定されます。 find()
の呼び出しが始まったあとで型付き配列に追加された要素は、 callbackFn
メソッドによって処理されません。存在していて、処理されていない型付き配列の要素が callbackFn
によって変更された場合、処理している callbackFn
関数に渡される値は、 find()
が要素の位置を処理する直前の値です。削除された要素は処理されません。
例
型付き配列内の素数を探す
次の例では、型付き配列内で素数である要素を探します (または、素数がない場合は undefined
を返します)。
function isPrime(element, index, array) {
let start = 2;
while (start <= Math.sqrt(element)) {
if (element % start++ < 1) {
return false;
}
}
return element > 1;
}
const uint8 = new Uint8Array([4, 5, 8, 12]);
console.log(uint8.find(isPrime)); // 5
仕様書
Specification |
---|
ECMAScript Language Specification # sec-%typedarray%.prototype.find |
ブラウザーの互換性
BCD tables only load in the browser