以下の内容はhttps://nopipi.hatenablog.com/entry/2025/06/29/222445より取得しました。


(JavaScript)配列の文字列のいずれかを含むケースをチェックする方法

結論

pattern.some( pt => element.includes(pt) ) )でチェックする。

  • patternが検査に適用する特定のパターンの文字列を登録した配列
  • elementがチェックしたい文字列

サンプルコード

const pattern = ['cat','dog','mouse'];
const input = ['cat','house','dog','dog-dayo','do'];

input.forEach( (element) => {
    console.log(
        "input:", 
        element, 
        "pattern.some( pt => element.includes(pt) result:", 
        pattern.some( pt => element.includes(pt) ) 
    );
});

実行結果

完全一致するdog以外に、patternの文字列を含むdog-dayotrueで判定してくれる。

input: cat pattern.some( pt => element.includes(pt) result: true
input: house pattern.some( pt => element.includes(pt) result: false
input: dog pattern.some( pt => element.includes(pt) result: true
input: dog-dayo pattern.some( pt => element.includes(pt) result: true
input: do pattern.some( pt => element.includes(pt) result: false

検証詳細

Array.prototype.includes()を利用した場合。

Array.prototype.includes()は要素の文字列と完全一致した、catdogのみ、trueとなる。

サンプルコード
const pattern = ['cat','dog','mouse'];
const input = ['cat','house','dog','dog-dayo','do'];

input.forEach( (element) => {
    console.log(
        "input:",
        element,
        "pattern.includes() result:",
        pattern.includes(element)
    );
});
実行結果

完全一致するcatdogしか、trueにならない。
これは、Array.prototype.includes()はそれぞれの要素に対して、SameValueZeroアルゴリズムで評価しているかららしい。

$ node test1.js

input: cat pattern.includes() result: true
input: house pattern.includes() result: false
input: dog pattern.includes() result: true
input: dog-dayo pattern.includes() result: false
input: do pattern.includes() result: false

String.prototype.includes()を利用した場合。

Array.prototype.some()は、配列を順番に関数にかけてチェックしtrueが一つでも出たらtrueとするメソッド。 それにArray.prototype.includes()で対象の文字列が含まれるかをチェックすることで、やりたいことを実現する。

サンプルコード
const pattern = ['cat','dog','mouse'];
const input = ['cat','house','dog','dog-dayo','do'];

input.forEach( (element) => {
    console.log(
        "input:",
        element,
        "pattern.some( pt => element.includes(pt) result:",
        pattern.some( pt => element.includes(pt) )
    );
});
実行結果

Array.prototype.includes()のケースに加えて、dog-dayotrueと判断される。
これは、String.prototype.includes()が、1 つの文字列を別の文字列の中に見出すことができるかどうかを判断しているかららしい。(Array.prototype.includes())と挙動が異なる。

$ node test2.js

input: cat pattern.some( pt => element.includes(pt) result: true
input: house pattern.some( pt => element.includes(pt) result: false
input: dog pattern.some( pt => element.includes(pt) result: true
input: dog-dayo pattern.some( pt => element.includes(pt) result: true
input: do pattern.some( pt => element.includes(pt) result: false



以上の内容はhttps://nopipi.hatenablog.com/entry/2025/06/29/222445より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14