📑

[Javascript]~を含むかのチェック

2022/10/04に公開約2,400字

1.matchを使う方法

str.match(/文字列/)で、文字列が含まれれば配列、文字列が含まれなければnullが返ることを利用する。

if (str.match(/hoge/)) {
  //strにhogeを含む場合の処理
}

2.indexOfを使う方法

str.indexOf(文字列)で、文字列が見つかれば文字列が見つかった場所(0以上)、文字列が見つからなければ-1が返ることを利用する。

返り値!=-1
if (str.indexOf('hoge') != -1) {
  //strにhogeを含む場合の処理
}
ビット反転演算子
if (~str.indexOf('hoge')) {
  //strにhogeを含む場合の処理
}

ビット反転演算子の解説

文字列が見つからない場合、indexOfが-1を返す。-1をビット反転演算子にかけると、0が返る。
if文では、0が真と判定される。
※ビット反転演算子
整数をビット反転演算子にかけると、符号を反転してマイナス1した数になる。

例)
~1 → -2
~-1 → 0
~0 → -1

配列に特定要素が含まれるか

  • Arrayオブジェクトの includesメソッド indexOfメソッド が利用できます。
const arr = [40, 30, 20, 10];
if (arr.indexOf(20) !== -1) {
  console.log(arr.indexOf(20));
  console.log('存在します');
}
if (arr.indexOf(50) === -1) {
  console.log(arr.indexOf(50));
  console.log('存在しません');
}
console.log('----------------------------------------');
if (arr.includes(20)) {
  console.log(arr.includes(20));
  console.log('存在します');
}
if (!arr.includes(50)) {
  console.log(arr.includes(50));
  console.log('存在しません');
}
実行結果
2
存在します
-1
存在しません
----------------------------------------
true
存在します
false
存在しません

文字列内に特定文字列が含まれるか

indexOf と includes を比較

  • indexOf と includes の判定処理を比較します。
const str1 = 'xxxabcxxx';
const str2 = 'abc';

if (str1.indexOf(str2) !== -1) {
  console.log(str1.indexOf(str2));
  console.log('存在します');
}

console.log('----------------------------------------');

if (str1.includes(str2)) {
  console.log(str1.includes(str2));
  console.log('存在します');
}
実行結果
3
存在します
----------------------------------------
true
存在します
  • true false で結果を返す includesメソッド のほうがスッキリとした判定処理になる。

includes と test を比較

  • includes と test の判定処理を比較します。
複数条件の時
const str1 = 'xxxdefxxx';
const str2 = 'abc';
const str3 = 'def';
const regexp = /abc|def/g;

if (str1.includes(str2) || str1.includes(str3)) {
  console.log('存在します');
}

console.log('----------------------------------------');

if (regexp.test(str1)) {
  console.log('存在します');
}
実行結果
存在します
----------------------------------------
存在します
  • testメソッド のほうがスッキリとした判定処理になる。

大文字小文字を区別したくないとき

const str1 = 'xxxABCxxx';
const str2 = 'abc';
const regexp = /abc/gi;

console.log(str1.includes(str2)); // false
console.log(regexp.test(str1)); // true
  • includesメソッド の場合、大文字小文字を区別する。
  • なので、区別しないようにしたいときは testメソッドを利用する。

参考

https://qiita.com/kazu56/items/557740f398e82fc881df
https://www.wakuwakubank.com/posts/485-javascript-include-array-string/

Discussion

ログインするとコメントできます