文字列.indexOf() / lastIndexOf() / includes()
| 対応: | ES1(ECMAScript 1997) |
|---|
文字列内の指定した文字列を検索し、その位置を返します。存在の有無だけを確認したい場合は『文字列.includes()』が便利です。
構文
// 先頭から検索して最初に見つかった位置を返します。
文字列.indexOf("検索文字列")
文字列.indexOf("検索文字列", 開始位置)
// 末尾から検索して最後に見つかった位置を返します。
文字列.lastIndexOf("検索文字列")
文字列.lastIndexOf("検索文字列", 開始位置)
// 文字列が含まれているかを true / false で返します。
文字列.includes("検索文字列")
文字列.includes("検索文字列", 開始位置)
メソッド一覧
| メソッド | 概要 |
|---|---|
| indexOf("検索文字列") | 先頭から検索し、最初に見つかった位置(インデックス)を返します。見つからない場合は『-1』を返します。 |
| indexOf("検索文字列", 開始位置) | 指定した位置から検索を開始します。 |
| lastIndexOf("検索文字列") | 末尾から検索し、最後に見つかった位置を返します。見つからない場合は『-1』を返します。 |
| includes("検索文字列") | 文字列が含まれていれば『true』、含まれていなければ『false』を返します。 |
| includes("検索文字列", 開始位置) | 指定した位置から検索を開始します。 |
サンプルコード
// パターン1: 文字列の indexOf / lastIndexOf / includes
var str = "JavaScript is great. JavaScript is fun.";
// indexOf で最初に見つかった位置を取得します。
console.log(str.indexOf("JavaScript"));
console.log(str.indexOf("is"));
console.log(str.indexOf("Python"));
// 2番目の引数で検索開始位置を指定できます。
console.log(str.indexOf("JavaScript", 1));
// lastIndexOf で最後に見つかった位置を取得します。
console.log(str.lastIndexOf("JavaScript"));
// includes で存在確認を行います。
console.log(str.includes("great"));
console.log(str.includes("Python"));
// パターン2: 配列の indexOf / includes
var members = ["item_a", "item_b", "item_c", "item_d", "item_e"];
// 配列内の要素の位置を返します。見つからない場合は -1 を返します。
console.log(members.indexOf("item_b"));
console.log(members.indexOf("item_z"));
// 存在確認は -1 との比較で行います。
var exists = members.indexOf("item_c") !== -1;
console.log(exists);
// パターン3: indexOf の結果を使って要素を操作する(splice との組み合わせ)
var list = ["item_a", "item_b", "item_c"];
var target = "item_b";
var pos = list.indexOf(target);
if (pos !== -1) {
list.splice(pos, 1); // 見つかった要素を削除します。
}
console.log(list);
// パターン4: lastIndexOf で重複要素の最後の位置を取得する
var scores = [80, 90, 75, 90, 60];
console.log(scores.indexOf(90));
console.log(scores.lastIndexOf(90));
0 11 -1 21 21 true false 1 -1 true [ 'item_a', 'item_c' ] 1 3
概要
『文字列.indexOf()』と『文字列.lastIndexOf()』は文字列内で指定した文字列を検索し、見つかった位置(インデックス)を数値で返すメソッドです。『文字列.indexOf()』は先頭から、『文字列.lastIndexOf()』は末尾から検索を行います。見つからなかった場合はどちらも『-1』を返します。
単に文字列が含まれているかどうかを調べたい場合は『文字列.includes()』を使うと、『true』か『false』で結果が得られるためコードが読みやすくなります。『文字列.indexOf()』を使って存在確認を行う場合は str.indexOf("abc") !== -1 のように『-1』と比較する必要がありますが、『文字列.includes()』なら str.includes("abc") と簡潔に書けます。
いずれのメソッドも大文字と小文字を区別して検索します。大文字・小文字を無視して検索したい場合は、あらかじめ『文字列.toLowerCase()』で統一してから検索するとよいでしょう。
対応ブラウザ
デスクトップ
2 以前 ×
2 以前 ×モバイル
Android Browser
37 以降 ○
4 以前 ×
Chrome Android
36 以降 ○
17 以前 ×
Firefox Android
79 以降 ○
3 以前 ×記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。