【JavaScript】indexOf / lastIndexOf – 指定した値が出現する位置を取得するメソッド

JavaScriptのindexOf()lastIndexOf()は、配列や文字列内で特定の要素や部分文字列が最初または最後に出現する位置を取得するためのメソッドです。検索機能を実装するときに非常に便利なメソッドなので、今回は基本的な使い方から注意点までをまとめていきたいと思います。

indexOf() メソッドとは?

indexOf()は、指定した値が最初に出現する位置(インデックス)を取得するメソッドです。見つからなかった場合は-1を返します。

基本的な構文

JavaScript
// 文字列での使用
文字列.indexOf(検索する文字列 [, 開始位置])

// 配列での使用
配列.indexOf(検索する要素 [, 開始位置])
  • 検索する文字列(または要素):探したい値を指定します。
  • 開始位置(省略可能):検索を開始する位置(インデックス番号)を指定します(デフォルトは 0)。

文字列での indexOf()

JavaScript
const sentence = 'コーヒーはおいしいです。';
console.log(sentence.indexOf("おいしい")); // 5
console.log(sentence.indexOf("にがい")); // -1(見つからない場合)

配列での indexOf()

JavaScript
const sweets = ['クッキー', 'チョコ', 'ドーナツ', 'チョコ'];
console.log(sweets.indexOf('チョコ')); // 1(最初に見つかったインデックス)
console.log(sweets.indexOf('ケーキ')); // -1(見つからない場合)

開始位置を指定

JavaScript
const numbers = [1, 2, 3, 4, 2, 5];
console.log(numbers.indexOf(2, 2)); // 4(インデックス2以降で検索)

lastIndexOf() メソッドとは?

lastIndexOf()は、指定した値が最後に出現する位置(インデックス)を取得するメソッドです。indexOf()とは異なり、検索が後方から前方に向かって行われます。

基本的な構文

JavaScript
// 文字列での使用
文字列.lastIndexOf(検索する文字列 [, 開始位置])

// 配列での使用
配列.lastIndexOf(検索する要素 [, 開始位置])

文字列での lastIndexOf()

JavaScript
const text = 'コーヒーはおいしいです。おいしいと思ってもらえると嬉しいです。';
console.log(text.lastIndexOf('おいしい')); // 12(最後に見つかった位置)
console.log(text.lastIndexOf('にがい')); // -1(見つからない場合)

配列での lastIndexOf()

JavaScript
const items = ['cookie', 'chocolate', 'donut', 'chocolate', 'cake'];
console.log(items.lastIndexOf('chocolate')); // 3(最後に出現するインデックス)

開始位置を指定

JavaScript
const values = [1, 2, 3, 4, 2, 5, 2];
console.log(values.lastIndexOf(2, 4)); // 4(インデックス4までの範囲で検索)

使用時の注意点

見つからなかった場合の処理

両メソッドとも、要素が見つからなかった場合は -1 を返します。検索結果を判定する際は -1 との比較を行いましょう。

JavaScript
const arr = ['a', 'b', 'c'];
if (arr.indexOf('d') !== -1) {
  console.log('見つかりました!');
} else {
  console.log('見つかりませんでした。');
}