JavaScript

Array.prototype.lastIndexOf()メソッド

 編集:2022.08.18 by T.A.

その Array 中を、指定の要素を指定位置から前方に探し、見つかった要素の位置を返します。

もし存在しなければ -1 を返します。

arr.lastIndexOf(searchElement[, fromIndex])
arr Arrayオブジェクト
searchElement 検索する配列要素です。
fromIndex 省略可。逆向きに検索し始める添字です。

デフォルトは配列の長さ に 1 を引いた値(arr.length -1)で、つまり配列全体が検索されます。

もしこの添字が配列の長さ以上ならば、配列全体が検索されます。

負の数の場合、これは配列の終わりからのオフセットとみなされます。この添字が負の数であってもなお、配列は後ろから前に検索されることに注意してください。負の添字の絶対値が配列の長さを超えた場合、-1 が返され、配列は検索されません。

戻り値

配列内の一致した要素の最後の位置です。見つからなかった場合は -1 です。

解説

lastIndexOf は searchElement と配列の要素を 厳密等価(三重イコール演算子 === で使われるのと同じ方法)を使って比較します。

lastIndexOf() の使用

lastIndexOf を使って配列中のある値の位置を探す例を以下に示します。

var numbers = [2, 5, 9, 2];
D=numbers.lastIndexOf(2);     //=3
D=numbers.lastIndexOf(7);     //=-1
D=numbers.lastIndexOf(2, 3);  //=3
D=numbers.lastIndexOf(2, 2);  //=0
D=numbers.lastIndexOf(2, -2); //=0。「2」を最後から2番目から前方に探して
D=numbers.lastIndexOf(2, -1); //=3
ある要素の存在をすべて見つける

以下の例は lastIndexOf を使って、与えられた配列中のある値の添字すべてを探しています。push を使って、値が見つかる度に別の配列にその添字を追加しています。

var indices = [];
var array = ['a', 'b', 'a', 'c', 'a', 'd'];
var element = 'a';
var idx = array.lastIndexOf(element);
while (idx != -1) {
  indices.push(idx);
  idx = (idx > 0 ? array.lastIndexOf(element, idx - 1) : -1);
}
D=indices; //=[4, 2, 0]

ここで idx == 0 の場合を分けて扱わないといけないことに注意してください。なぜなら、もし検索する値が配列の最初の要素にあると、その値は fromIndex パラメータにかかわらずいつもヒットしてしまうのです。これは indexOf メソッドとは異なります。

¶以下を省く


テスト