TypedArray.prototype.findLastIndex()
findLastIndex()
メソッドは、型付き配列を逆順で反復処理し、指定したテスト関数を満たす最初の要素の添字を返します。
テスト関数を満たす値がなかった場合は、-1 を返します。
findLast()
メソッドも参照してください。こちらは見つかった要素の添字ではなく値を返します。
試してみましょう
構文
js
// アロー関数
findLastIndex((element) => { /* ... */ } )
findLastIndex((element, index) => { /* ... */ } )
findLastIndex((element, index, array) => { /* ... */ } )
// コールバック関数
findLastIndex(callbackFn)
findLastIndex(callbackFn, thisArg)
// インラインコールバック関数
findLastIndex(function(element) { /* ... */ })
findLastIndex(function(element, index) { /* ... */ })
findLastIndex(function(element, index, array){ /* ... */ })
findLastIndex(function(element, index, array) { /* ... */ }, thisArg)
引数
返値
テストに合格した要素のうち、配列の最後(最も大きな添字)の要素の添字。 一致する要素が見つからなかった場合に -1 を返します。
解説
findLastIndex()
メソッドは、callbackFn
が真値を返すまで、型付き配列の各要素に対して、添字の降順に 1 回ずつ callbackFn
関数を実行します。
findLastIndex()
はその要素の添字を返し、配列のイテレーターを反復処理するのを止めます。
もし callbackFn
が真値を返さなかった場合、 findLastIndex()
は undefined
を返します。
callbackFn
は、要素の値、要素の添字、走査されている型付き配列の 3 つの引数で呼び出されます。
thisArg
引数が findLastIndex()
に指定された場合、それが callbackFn
を呼び出すたびに this
として使用されます。
指定されなかった場合は、undefined
が使用されます。
findLastIndex()
メソッドは呼び出された型付き配列を変更しませんが、callbackFn
に指定された関数からは変更することができます。
findLastIndex()
が処理する要素の範囲は、callbackFn
が最初に呼び出される前に設定されています。
findLastIndex()
の呼び出しを始めた後に型付き配列に追加された要素は、callbackFn
が処理する対象にはなりません。
型付き配列に存在する未処理の要素が callbackFn
によって変更された場合、処理する callbackFn
に渡されるその値は、findLastIndex()
がその要素の要素を処理した時点の値になります。
警告: 上記のように変更を同時進行で行うと、理解しにくいコードになることが多いので、(特別な場合を除き)一般的には避けるべきです。
例
型付き配列から素数の添字を探す
以下の例では、配列の中で素数である最後の要素の添字を探します(素数がない場合は -1
を返します)。
js
function isPrime(element) {
if (element % 2 === 0 || element < 2) {
return false;
}
for (let factor = 3; factor <= Math.sqrt(element); factor += 2) {
if (element % factor === 0) {
return false;
}
}
return true;
}
let uint8 = new Uint8Array([4, 6, 8, 12]);
console.log(uint8.findLastIndex(isPrime));
// -1 (no primes in array)
uint8 = new Uint8Array([4, 5, 7, 8, 9, 11, 12]);
console.log(uint8.findLastIndex(isPrime));
// 11
仕様書
Specification |
---|
ECMAScript Language Specification # sec-%typedarray%.prototype.findlastindex |
ブラウザーの互換性
BCD tables only load in the browser