Problème : Comment déterminer efficacement si une chaîne donnée contient une sous-chaîne d'un tableau prédéfini en JavaScript ?
Solution :
Il existe deux approches que vous pouvez adopter pour cette tâche :
La méthode array.some() permet de vérifier si au moins un élément du tableau satisfait une condition donnée. Vous pouvez l'utiliser comme suit :
<code class="javascript">if (substrings.some(function(v) { return str.indexOf(v) >= 0; })) { // There's at least one matching substring }</code>
Ou, avec les fonctions fléchées et la méthode include() :
<code class="javascript">if (substrings.some(v => str.includes(v))) { // There's at least one matching substring }</code>
Bien qu'il n'existe pas de fonction intégrée spécifiquement conçue pour ce type de recherche, vous pouvez construire une expression régulière pour correspondre aux sous-chaînes souhaitées et utiliser la méthode test() sur la chaîne. Cependant, cette approche peut être coûteuse en termes de calcul pour les grands tableaux et chaînes.
<code class="javascript">const regex = new RegExp(`( ${substrings.join(' | ')} )`, 'g'); if (regex.test(str)) { // There's at least one matching substring }</code>
Considérez le tableau suivant de sous-chaînes et deux chaînes différentes :
<code class="javascript">const substrings = ["one", "two", "three"]; let str1 = "this has one"; let str2 = "this doesn't have any";</code>
Utilisation de l'approche 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>
Sortie :
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>
Sortie :
No match using "this doesn't have any"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!