Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

Array.prototype.findIndex()

BaselineWidely available

findIndex()Array インスタンスのメソッドで、配列内の指定されたテスト関数に合格する最初の要素のインデックスを返します。テスト関数に合格する要素がなかった場合は-1 を返します。

find() メソッドも参照してください。こちらのメソッドは、配列内で見つかった要素の位置ではなく、値を返します。

試してみましょう

const array1 = [5, 12, 8, 130, 44];const isLargeNumber = (element) => element > 13;console.log(array1.findIndex(isLargeNumber));// Expected output: 3

構文

js
findIndex(callbackFn)findIndex(callbackFn, thisArg)

引数

callbackFn

配列のそれぞれの要素に対して実行する関数です。一致する要素が得られたことを示すには真値を返し、そうでなければ偽値を返してください。この関数は以下の引数で呼び出されます。

element

配列内で現在処理されている要素です。

index

配列内で現在処理されている要素のインデックス(位置)です。

array

findIndex() を呼び出した元の配列です。

thisArg省略可

callbackFn 内でthis として使われるオブジェクトです。反復処理メソッドを参照してください。

返値

テストに合格した配列の要素の位置を返します。それ以外の場合は、-1 を返します。

解説

findIndex() メソッドは反復処理メソッドです。配列の要素のそれぞれに対して、インデックスの昇順に一度ずつcallbackFn 関数を実行し、callbackFn 関数が真値を返すまで繰り返します。findIndex() はその要素を返し、配列の反復処理を停止します。もしcallbackFn が真値を返さない場合、findIndex()-1 を返します。

callbackFn は、値が割り当てられているものに限らず、配列中のすべてのインデックスに対して呼び出されます。疎配列では、空のスロットはundefined と同じ動作をします。

findIndex() は、呼び出した配列を変更 (mutate) しませんが、callbackFn で提供された関数は変更する可能性があります。しかし、配列の長さは最初にcallbackFn が呼び出される前に設定されます。したがって、

  • callbackFnfindIndex() の呼び出しを始めたときの配列の長さを超えて追加された要素にはアクセスしません。
  • 既に訪問した位置を変更しても、callbackFn が再度呼び出されることはありません。
  • まだ訪問していない既存の配列要素がcallbackFn によって変更された場合、callbackFn に渡される値はその要素が取得される時点の値になります。削除された 要素はundefined であるかのように処理されます。

警告:上で説明したような同時進行の変更は、理解しにくいコードになることが多いので、(特別な場合を除いて)避けるのが一般的です。

findIndex() メソッドは汎用的です。これはthis 値にlength プロパティと整数キーのプロパティがあることだけを期待します。

配列内の素数の位置を検索する

次の例では、配列の中で素数の入った最初の要素の位置を返し、素数が見つからなかった場合は-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;}console.log([4, 6, 8, 9, 12].findIndex(isPrime)); // -1, not foundconsole.log([4, 6, 7, 9, 12].findIndex(isPrime)); // 2 (array[2] is 7)

疎配列における find() の使用

疎配列でundefined を検索することで、空スロットのインデックスを取得することができます。

js
console.log([1, , 3].findIndex((x) => x === undefined)); // 1

配列でないオブジェクトに対する find() の呼び出し

findIndex() メソッドはthislength プロパティを読み込み、そのキーがlength よりも小さい非負の整数である各プロパティにアクセスします。

js
const arrayLike = {  length: 3,  "-1": 0.1, // -1 < 0 なので findIndex() 空は無視される  0: 2,  1: 7.3,  2: 4,};console.log(  Array.prototype.findIndex.call(arrayLike, (x) => !Number.isInteger(x)),); // 1

仕様書

Specification
ECMAScript® 2026 Language Specification
# sec-array.prototype.findindex

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp