JavaScript - 文字列の比較方法、5つの方法

JavaScriptでさまざまな文字列を比較する5つの方法を紹介します。等価演算子で文字列が等しいか比較したり、文字列のサイズ比較することができます。あるいは、文字列にどの文字列が含まれているかを確認するか、どの文字列で始まるか終了するかを確認することもできます。

1. 等価演算子(==、===)で文字列を比較する

2つの文字列が等しいかどうかを確認するときは、等価演算子(==、===)を使用できます。以下の例のように、2つの文字列が等しい場合はtrueを返し、異なる場合はfalseを返します。

const str1 = 'hello';
const str2 = 'hello';
const str3 = 'world';

console.log(str1 === str2);   // true
console.log(str1 === str3);   // false
console.log(str2 === str3);   // false
console.log(str2 !== str3);   // true

console.log(str1 == str2);   // true
console.log(str1 == str3);   // false
console.log(str2 == str3);   // false
console.log(str2 != str3);   // true

1.1 等価演算子、==と===の違い

上記の例では、==と===の結果が同じで、違いがわかりませんでした。

==はEqualityを比較し、===はIdentityを比較します。以下の違いがあります。

  • ==は比較するオブジェクトのタイプが異なっても、型変換して値が等しい場合はtrue
  • ===はオブジェクトタイプが同じで値が等しい場合はtrue

以下の例を見ると、違いを確認できます。 stringとNumber型のオブジェクトを比較しますが、 ==はtrue、 ===はfalseを返します。

==の場合、Number型をstring型に変換して比較すると、2つのオブジェクトの値が同じであるためtrueが返されます。 しかし、 ===の場合、2つのオブジェクトの型が異なるため、falseが返されました。

const str = '123';
const num = 123;

console.log(str === num);   // false
console.log(str == num);    // true

厳密に比較するには、 === を使って比較することをお勧めします。

developer.mozilla.orgにさまざまな例があるので、この記事も確認してみてください。

2. 文字列サイズの比較(>、<演算子)

文字列のサイズ比較は、他の言語と同じようにASCII値を比較してサイズを決定します。アルファベット順が前にあるほどサイズが小さく、文字列の前から後ろの順に比較をします。文字列が長くても同じ位置(Index)の文字のアルファベット順が小さい場合は、文字列のサイズが小さいと計算されます。そして、文字列の長さが短く、同じインデックスに文字がない場合は、より小さい文字列として計算されます。

const str1 = 'abcd';
const str2 = 'ab';
const str3 = 'abd';
const str4 = 'aba';
const str5 = 'bbcd';

console.log(str1 > str2);   // true
console.log(str1 < str3);   // true
console.log(str1 > str4);   // true
console.log(str1 < str5);   // true

3.文字列にどの文字列が含まれているかを確認する:String.indexOf()

String.indexOf() を使用して、文字列にどの文字列が含まれているかを確認できます。 以下のように、引数に渡された文字列が文字列内に存在する場合は、その文字列が位置するIndexを返します。存在しない場合は、-1を返します。したがって、-1 が返されるかどうかで文字列が含まれていることを確認できます。

const str = 'Hello, World, Javascript';

if (str.indexOf('Hello') != -1) {
  console.log("str contains 'Hello'");
} else {
  console.log("str doesn't contain 'Hello'");
}

Output:

str contains 'Hello'

4. 文字列にどの文字列が含まれているかを確認する : String.includes()

String.includes() を使用して、文字列にどの文字列が含まれているかを確認できます。 以下のように、引数に渡された文字列が文字列内に存在する場合はtrueが返され、存在しない場合はfalseを返します。

const str = 'Hello, World, Javascript';

if (str.includes('Hello')) {
  console.log("str contains 'Hello'");
} else {
  console.log("str doesn't contain 'Hello'");
}

Output:

str contains 'Hello'

5. 文字列がどの文字列で始まるか終了するかを確認する : String.startsWith(), String.endsWith()

startsWith()は、文字列が引数として渡された文字列で始まるときにtrueを返します。そしてendsWith()も同様に、文字列が引数として渡された文字列で終わるときにtrueを返します。

const str = 'Hello, World, Javascript';

console.log(str.startsWith('Hello'));     // true
console.log(str.startsWith('World'));     // false

console.log(str.endsWith('Javascript'));  // true
console.log(str.startsWith('World'));     // false

Related Posts

codechachaCopyright ©2019 codechacha