文字列.indexOf() / lastIndexOf() / includes()
| 対応: | ES1(ECMAScript 1997) |
|---|
文字列内の指定した文字列を検索し、その位置を返します。存在の有無だけを確認したい場合は『文字列.includes()』が便利です。
構文
// 先頭から検索して最初に見つかった位置を返します。
文字列.indexOf("検索文字列")
文字列.indexOf("検索文字列", 開始位置)
// 末尾から検索して最後に見つかった位置を返します。
文字列.lastIndexOf("検索文字列")
文字列.lastIndexOf("検索文字列", 開始位置)
// 文字列が含まれているかを true / false で返します。
文字列.includes("検索文字列")
文字列.includes("検索文字列", 開始位置)
メソッド一覧
| メソッド | 概要 |
|---|---|
| indexOf("検索文字列") | 先頭から検索し、最初に見つかった位置(インデックス)を返します。見つからない場合は『-1』を返します。 |
| indexOf("検索文字列", 開始位置) | 指定した位置から検索を開始します。 |
| lastIndexOf("検索文字列") | 末尾から検索し、最後に見つかった位置を返します。見つからない場合は『-1』を返します。 |
| includes("検索文字列") | 文字列が含まれていれば『true』、含まれていなければ『false』を返します。 |
| includes("検索文字列", 開始位置) | 指定した位置から検索を開始します。 |
サンプルコード
sample_indexOf.js
// パターン1: 文字列の indexOf / lastIndexOf / includes
var str = "JavaScript is great. JavaScript is fun.";
// indexOf で最初に見つかった位置を取得します。
console.log(str.indexOf("JavaScript")); // 『0』と出力されます。
console.log(str.indexOf("is")); // 『11』と出力されます。
console.log(str.indexOf("Python")); // 見つからないため『-1』と出力されます。
// 2番目の引数で検索開始位置を指定できます。
console.log(str.indexOf("JavaScript", 1)); // 『21』と出力されます。
// lastIndexOf で最後に見つかった位置を取得します。
console.log(str.lastIndexOf("JavaScript")); // 『21』と出力されます。
// includes で存在確認を行います。
console.log(str.includes("great")); // 『true』と出力されます。
console.log(str.includes("Python")); // 『false』と出力されます。
// パターン2: 配列の indexOf / includes
var members = ["狡噛慎也", "常守朱", "宜野座伸元", "縢秀星", "霜月美佳"];
// 配列内の要素の位置を返します。見つからない場合は -1 を返します。
console.log(members.indexOf("常守朱")); // 『1』と出力されます。
console.log(members.indexOf("槇島聖護")); // 見つからないため『-1』と出力されます。
// 存在確認は -1 との比較で行います。
var exists = members.indexOf("宜野座伸元") !== -1;
console.log(exists); // 『true』と出力されます。
// パターン3: indexOf の結果を使って要素を操作する(splice との組み合わせ)
var list = ["狡噛慎也", "常守朱", "縢秀星"];
var target = "常守朱";
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)); // 最初に見つかった位置 『1』と出力されます。
console.log(scores.lastIndexOf(90)); // 最後に見つかった位置 『3』と出力されます。
0 11 -1 21 21 true false 1 -1 true [ '狡噛慎也', '縢秀星' ] 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 以前 ×記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。