问题: 如何有效地确定给定字符串是否包含 JavaScript 中预定义数组中的任何子字符串?
解决方案:
您可以采取两种方法来完成此任务:
array.some() 方法允许您检查数组中是否至少有一个元素满足给定条件。您可以按如下方式使用它:
<code class="javascript">if (substrings.some(function(v) { return str.indexOf(v) >= 0; })) { // There's at least one matching substring }</code>
或者,使用箭头函数和includes()方法:
<code class="javascript">if (substrings.some(v => str.includes(v))) { // There's at least one matching substring }</code>
虽然没有专门为此类搜索设计的内置函数,但您可以构造正则表达式来匹配所需的子字符串,并在字符串上使用 test() 方法。但是,对于大型数组和字符串,这种方法的计算成本可能很高。
<code class="javascript">const regex = new RegExp(`( ${substrings.join(' | ')} )`, 'g'); if (regex.test(str)) { // There's at least one matching substring }</code>
考虑以下子字符串数组和两个不同的字符串:
<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中文网其他相关文章!