ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript で配列の部分文字列の一致を効率的にチェックするにはどうすればよいですか?

JavaScript で配列の部分文字列の一致を効率的にチェックするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-31 09:03:29161ブラウズ

How to Efficiently Check for Substring Matches from an Array in JavaScript?

JavaScript で配列の部分文字列と一致する文字列

問題: JavaScript で指定された文字列に事前定義された配列の部分文字列が含まれているかどうかを効率的に判断する方法?

解決策:

このタスクには 2 つのアプローチが可能です。

1. Array.some() メソッド:

array.some() メソッドを使用すると、配列内の少なくとも 1 つの要素が指定された条件を満たすかどうかを確認できます。次のように利用できます:

<code class="javascript">if (substrings.some(function(v) { return str.indexOf(v) >= 0; })) {
  // There's at least one matching substring
}</code>

または、アロー関数と include() メソッドを使用します:

<code class="javascript">if (substrings.some(v => str.includes(v))) {
  // There's at least one matching substring
}</code>

2.正規表現:

このタイプの検索用に特別に設計された組み込み関数はありませんが、目的の部分文字列に一致する正規表現を構築し、文字列に対して test() メソッドを使用できます。ただし、このアプローチは、大きな配列や文字列の場合、計算コストが高くなる可能性があります。

<code class="javascript">const regex = new RegExp(`( ${substrings.join(' | ')} )`, 'g');
if (regex.test(str)) {
  // There's at least one matching substring
}</code>

例:

次の部分文字列と 2 つの異なる文字列の配列を考えてみましょう:

<code class="javascript">const substrings = ["one", "two", "three"];

let str1 = "this has one";
let str2 = "this doesn't have any";</code>

array.some() アプローチの使用:

<code class="javascript">if (substrings.some(v => str1.includes(v))) {
  console.log(`Match using "${str1}"`);
} else {
  console.log(`No match using "${str1}"`);
}</code>

出力:

Match using "this has one"
<code class="javascript">if (substrings.some(v => str2.includes(v))) {
  console.log(`Match using "${str2}"`);
} else {
  console.log(`No match using "${str2}"`);
}</code>

出力:

No match using "this doesn't have any"

以上がJavaScript で配列の部分文字列の一致を効率的にチェックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。