Movatterモバイル変換


[0]ホーム

URL:


  1. 開発者向けのウェブ技術
  2. JavaScript
  3. JavaScript リファレンス
  4. 標準組み込みオブジェクト
  5. Array
  6. lastIndexOf()

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

View in EnglishAlways switch to English

Array.prototype.lastIndexOf()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2015年7月⁩.

lastIndexOf()Array インスタンスのメソッドで、配列中で与えられた要素が見つかった最後の添字を返します。もし存在しなければ -1 を返します。配列はfromIndex から逆向きに検索されます。

試してみましょう

const animals = ["Dodo", "Tiger", "Penguin", "Dodo"];console.log(animals.lastIndexOf("Dodo"));// 予想される結果: 3console.log(animals.lastIndexOf("Tiger"));// 予想される結果: 1

構文

js
lastIndexOf(searchElement)lastIndexOf(searchElement, fromIndex)

引数

searchElement

検索する配列要素です。

fromIndex省略可

検索し始める位置のゼロから始まるインデックスで、整数に変換されます

  • インデックスが負の場合、配列の末尾からさかのぼって数えます。-array.length <= fromIndex < 0 の場合、fromIndex + array.length が使用されます。
  • fromIndex < -array.length の場合、配列は検索が行われず、-1 が返されます。概念的には、配列の先頭より前の存在しない位置から始めて、そこから逆方向に進むと考えることができます。途中には配列要素はないので、searchElement は決して見つかりません。
  • fromIndex >= array.length またはfromIndex が省略されているかundefined の場合、array.length - 1 が使用され、配列全体が検索されるようにします。概念的には、配列の末尾の先にある存在しない位置から始めて、そこから後方に進むと考えることができます。最終的に配列の本当の末尾に到達し、この点から実在する配列要素を逆探索し始めます。

返値

配列内の最後のsearchElement のインデックスです。見つからなかった場合は-1 です。

解説

lastIndexOf() メソッドはsearchElement と配列の要素を厳密な等価性=== 演算子を使用するアルゴリズムと同じ)を使用して比較します。NaN 値が等しいものとして比較されることはないので、searchElementNaN の場合、lastIndexOf() は常に-1 を返します。

lastIndexOf() メソッドは疎配列の空スロットをスキップします。

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

lastIndexOf() の使用

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

js
const numbers = [2, 5, 9, 2];numbers.lastIndexOf(2); // 3numbers.lastIndexOf(7); // -1numbers.lastIndexOf(2, 3); // 3numbers.lastIndexOf(2, 2); // 0numbers.lastIndexOf(2, -2); // 0numbers.lastIndexOf(2, -1); // 3

lastIndexOf() を使用してNaN を検索することはできません。

js
const array = [NaN];array.lastIndexOf(NaN); // -1

ある要素の存在をすべて見つける

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

js
const indices = [];const array = ["a", "b", "a", "c", "a", "d"];const element = "a";let idx = array.lastIndexOf(element);while (idx !== -1) {  indices.push(idx);  idx = idx > 0 ? array.lastIndexOf(element, idx - 1) : -1;}console.log(indices);// [4, 2, 0]

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

疎配列に対する lastIndexOf() の使用

疎配列の空のスロットを検索するためにlastIndexOf() を使用することはできません。

js
console.log([1, , 3].lastIndexOf(undefined)); // -1

配列以外のオブジェクトに対する lastIndexOf() の呼び出し

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

js
const arrayLike = {  length: 3,  0: 2,  1: 3,  2: 2,  3: 5, // length が 3 なので lastIndexOf() からは無視される};console.log(Array.prototype.lastIndexOf.call(arrayLike, 2));// 2console.log(Array.prototype.lastIndexOf.call(arrayLike, 5));// -1

仕様書

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

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp