JavaScriptのindexOf()
とlastIndexOf()
は、配列や文字列内で特定の要素や部分文字列が最初または最後に出現する位置を取得するためのメソッドです。検索機能を実装するときに非常に便利なメソッドなので、今回は基本的な使い方から注意点までをまとめていきたいと思います。
indexOf()
は、指定した値が最初に出現する位置(インデックス)を取得するメソッドです。見つからなかった場合は-1
を返します。
JavaScript
// 文字列での使用
文字列.indexOf(検索する文字列 [, 開始位置])
// 配列での使用
配列.indexOf(検索する要素 [, 開始位置])
検索する文字列(または要素)
:探したい値を指定します。開始位置(省略可能)
:検索を開始する位置(インデックス番号)を指定します(デフォルトは0
)。
JavaScript
const sentence = 'コーヒーはおいしいです。';
console.log(sentence.indexOf("おいしい")); // 5
console.log(sentence.indexOf("にがい")); // -1(見つからない場合)
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()
は、指定した値が最後に出現する位置(インデックス)を取得するメソッドです。indexOf()
とは異なり、検索が後方から前方に向かって行われます。
JavaScript
// 文字列での使用
文字列.lastIndexOf(検索する文字列 [, 開始位置])
// 配列での使用
配列.lastIndexOf(検索する要素 [, 開始位置])
JavaScript
const text = 'コーヒーはおいしいです。おいしいと思ってもらえると嬉しいです。';
console.log(text.lastIndexOf('おいしい')); // 12(最後に見つかった位置)
console.log(text.lastIndexOf('にがい')); // -1(見つからない場合)
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('見つかりませんでした。');
}