→
その Array の要素の先頭からコールバック関数に掛けて処理結果がtrueだった要素の位置(インデックス)を数値で返します。
テスト関数を満たす要素がない場合を含め、それ以外の場合は -1 を返します。
コールバック関数による:
function 関数名(element[, index[, array]]){
処理
}
インラインコールバック関数による:
アロー関数による:
arr | Arrayオブジェクト |
---|---|
callback | 実行する関数名を記述。 |
関数名 | callbackと同じ名前を記述。 |
処理 | 処理プログラム。必ずreturnで評価結果を返す。
アロー関数使用の場合、「{ }」に囲まれていない場合は評価式となります。 |
element | 配列内で現在処理されている要素。 |
index | 省略可。配列内で現在処理されている要素の位置。 |
array | 省略可。findIndex() を呼び出した元の配列。 |
thisArg | 省略可。任意で、callback を実行する時に this として使うオブジェクト。 |
見つかった要素のインデックス値。それ以外の場合は、-1 を返します。
findIndex() メソッドは、配列のそれぞれの位置に対して callback を1回ずつ呼び出し、callback が真値を返すものを見つけるまで繰り返します。
そのような要素が見つかると、findIndex() はすぐにその要素の位置を返します。callback が真値を返すと(または配列の length が 0 であると)、findIndex() は -1 を返します。
極端な場合の警告: Array.some() などの他の配列メソッドとは異なり、callback は値が割り当てられていない位置でも実行されます。
callback は3つの引数で呼び出されます:
findIndex に thisArg 引数を与えた場合、各 callback の呼び出し時に、その与えたオブジェクトが、this として使用されます。この引数を省略した場合、this は undefined になります。
findIndex() で処理される要素の範囲は、callback が最初に呼び出される前に設定されます。callback は最初の findIndex() の呼び出し以降に配列に追加された要素は処理しません。配列内で未処理の既存の要素が callback によって変更された場合、callback へ渡される値は findIndex() がその要素の位置を処理する時点での値になります。
削除された値も処理対象になります。
¶省く
次の例では、配列の中で素数の入った最初の要素の位置を返し、素数が見つからなかった場合は -1 を返します。
function F(num){ if(num > 5){ return true; } return false; } D=[4, 6, 8, 9, 12].findIndex(F); //=1 D=[4, 3, 2, 1, 0].findIndex(F); //=-1。見つからなかった
次の例では、アロー関数を使用してフルーツの位置を検索しています。
const fruits = ["apple", "banana", "cantaloupe", "blueberries", "grapefruit"]; const index = fruits.findIndex(fruit => fruit === "blueberries"); //=3
D=[4, 6, 8, 9, 12].findIndex(function(ele){return ele > 5}); //=1
D=[4, 6, 8, 9, 12].findIndex(function(ele,idx){ alert(idx); //処理する配列のインデックスを表示。 return ele > 5 }); //=1