JavaScriptで文字列の中に特定の文字列が含まれているかを確認する方法として、`includes()`メソッドがあります。このメソッドは文字列が含まれているかどうかを真偽値(true/false)で返してくれる便利な機能です。

includes()メソッドの基本的な使い方

const text = "Hello World";
console.log(text.includes("World")); // true
console.log(text.includes("world")); // false(大文字小文字は区別される)

メソッドの構文

string.includes(searchString[, position])
  • `searchString`: 検索する文字列
  • `position`: 検索を開始する位置(省略可能)

具体的な使用例

基本的な検索

const message = "JavaScript is awesome";
console.log(message.includes("Java")); // true
console.log(message.includes("PHP")); // false

検索開始位置を指定する

const text = "Programming is fun";
console.log(text.includes("is", 0)); // true
console.log(text.includes("is", 12)); // false

大文字小文字を区別しない検索

`includes()`は大文字小文字を区別しますが、`toLowerCase()`と組み合わせることで、大文字小文字を区別せずに検索できます。

const text = "Hello World";
console.log(text.toLowerCase().includes("world")); // true

よくあるエラーと解決方法

1. nullやundefinedに対する使用

// エラーが発生するケース
const text = null;
text.includes("something"); // TypeError

// 正しい使用方法
const text = null;
if (text && text.includes("something")) {
    console.log("Found!");
}

2. 数値に対する使用

// エラーが発生するケース
const number = 12345;
number.includes(1); // TypeError

// 正しい使用方法
const number = 12345;
number.toString().includes("1"); // true

ブラウザ互換性

`includes()`メソッドは比較的新しいメソッドですが、現代の主要なブラウザではすべてサポートされています。IE11以前のブラウザでは使用できないため、その場合は`indexOf()`メソッドを代替として使用できます。

// IE11対応のポリフィル
if (!String.prototype.includes) {
    String.prototype.includes = function(search, start) {
        return this.indexOf(search, start) !== -1;
    };
}

まとめ

`includes()`メソッドは、文字列内の検索を簡単に行える便利なメソッドです。大文字小文字を区別する、検索開始位置を指定できるなどの特徴があり、モダンなJavaScriptプログラミングには欠かせないメソッドの1つです。ただし、nullチェックや型変換には注意が必要です。