定義と使い方
文字列におけるincludes()関数は指定された文字列に特定の文字列が含まれているかどうかを確認し、含まれていればtrue、含まれていなければfalseを返します。
この関数を使用すると、特定の文字列が含まれているかをチェックする際に非常に便利です。
大文字と小文字を区別します。
基本例
const str = "はじめまして!codingEverybodyです。";
console.log(str.includes("codingEverybody")); // 出力: true
console.log(str.includes("CODINGEVERYBODY")); // 出力: false(大文字と小文字を区別)
配列では、配列 includes()が配列に特定の要素が含まれているかどうかを確認する関数です。
構文
str.includes(searchString)
str.includes(searchString, position)
strは、includes()関数を適用する文字列です。
引数
searchString |
検索対象となる文字列です。正規表現であってはなりません。 正規表現以外のすべての値は文字列に強制変換されるため、この値を省略したり undefinedを渡した場合、includes()は"undefined"という文字列を検索することになり、通常は意図した動作にならない可能性があります。 |
|---|---|
position |
オプション。検索を開始する0から始まるインデックスです。省略した場合は、デフォルト値として 0が使用されます。(文字列のインデックスは0から始まります。) |
戻り値
文字列が、空文字列("")を含む指定された文字列を含んでいる場合はtrueを、含んでいない場合はfalseを返します。
注意点
includes()関数を使用する際には、いくつか注意すべき点があります。
大文字と小文字を区別
includes()関数は、大文字と小文字を区別します。
const haystack = "Hello, World!";
const needle = "world";
const isNeedle = haystack.includes(needle); // false(大文字と小文字を区別)
if (isNeedle) {
console.log(`文字列に'${needle}'が含まれています。`);
} else {
console.log(`文字列に'${needle}'が含まれていません。`);
}
// 出力: "文字列に'world'が含まれていません。"
正規表現パターンは使用できません
検索対象となる文字列は正規表現であってはなりません。指定した場合、TypeErrorが発生します。
const haystack = "Hello, World!";
const needle = /Hello/; // 正規表現は使用できません。TypeErrorが発生します。
const isNeedle = haystack.includes(needle);
if (isNeedle) {
console.log(`文字列に'${needle}'が含まれています。`);
} else {
console.log(`文字列に'${needle}'が含まれていません。`);
}
空文字列の場合
空文字列("")はすべての文字列の先頭と末尾に存在すると見なされるため、空文字列を検索すると常にtrueが返されます。
const haystack = "ようこそ。";
const needle = "";
const isNeedle = haystack.includes(needle);
console.log(isNeedle); // 空文字列は常にtrueを返します。
このような動作は、文字列の論理的な定義に基づいています。空文字列は任意の文字列の先頭または末尾に存在すると見なされるため、空文字列で始まる、または空文字列で終わるすべての文字列に対してtrueを返すのは自然な結果です。そのため、この考え方はJavaScriptだけでなく、多くのプログラミング言語でも一般的に採用されています。
includes()関数のさまざまな活用例
includes()関数は、文字列に特定の文字列が含まれているかどうかを確認する際に便利です。
例えば、検索機能や文字列処理などに適しています。以下はincludes()関数の使用例の一部です。
検索機能の実装
const txt = "私はリンゴとバナナが好きです。";
const searchTerm = "リンゴ";
if (txt.includes(searchTerm)) {
console.log(`テキストに'${searchTerm}'という単語が含まれています。`);
} else {
console.log(`テキストに'${searchTerm}'という単語が含まれていません。`);
}
// 出力: "テキストに'リンゴ'という単語が含まれています。"
文字列のフィルタリング
const content = 'この文章には望ましくない単語が含まれています。';
const unwantedWords = ['望ましくない', '悪い', '不適切な'];
unwantedWords.forEach(unwantedWord => {
if (content.includes(unwantedWord)) {
let filteredContent = content.replace(unwantedWord, "***");
console.log(filteredContent);
}
});
// 出力: "この文章には***単語が含まれています。"
コード補足説明
配列のforEach()関数は、配列を順番に処理しながら各要素をコールバック関数で処理するための関数です。
コード補足説明
文字列のreplace()関数は、文字列の特定の部分を検索し、別の文字列に置き換える(replace)ための関数です。
特定の文字列の出現回数
// 大文字と小文字を区別せずに 'hello' 文字列を検索
const searchStr = "hello";
const str = "Hello, world! hello, universe!".toLowerCase();
let count = 0;
let startIndex = 0;
while (str.includes(searchStr, startIndex)) {
count++;
startIndex = str.indexOf(searchStr, startIndex) + 1;
}
console.log("検索する文字列の出現回数:", count);
// 出力: 検索する文字列の出現回数: 2
コード補足説明toLowerCase()関数は、文字列を小文字に変換して返す関数です。
コード補足説明while文は、条件式が真(true)である間、コードブロックを繰り返し実行するループ文です。
コード補足説明
文字列のindexOf()関数は、文字列の中から引数として渡された文字列を検索し、最初に見つかった(出現した)文字列のインデックスを返します。
互換性
| メソッド |
デスクトップ Chrome
|
デスクトップ Edge
|
デスクトップ Firefox
|
Safari
|
Node.js
|
|---|---|---|---|---|---|
includes()
|
41 | 12 | 40 | 9 | 4 |
仕様書
| 仕様書 | |
|---|---|
includes()
|
ECMAScript® 2026 Language Specification #sec-string.prototype.includes |