On sait qu'il existe deux tableaux de chaînes, appelons-les a1, a2 pour l'instant.
La tâche actuelle consiste à trouver tous les éléments de a1 qui sont des sous-chaînes d'éléments dans a2 et de les stocker dans un nouveau tableau.
Triez ce nouveau tableau par ordre lexicographique et renvoyez-le.
Un exemple :
a1 = ["arp", "live", "strong"]
a2 = ["lively", "alive" , "harpe", "sharp", "armstrong"]
Retour["arp", "live", "strong"]
Ici, "arp" est une sous-chaîne de "harp", et "live" est une sous-chaîne de "lively", donc il peut être retourné.
Regardez un autre exemple :
a1 = ["tarp", "mice", "bull"]
a2 = ["lively", "alive " ", "harpe", "sharp", "armstrong"]
Retour à []
icia1 Aucun d'entre eux n'est conforme aux règles de sous-chaîne, donc un tableau vide est renvoyé.
D'accord, voyons comment le résoudre :
Tout d'abord, quand je vois la sous-chaîne, je suppose que j'ai besoin d'un moyen de juger s'il s'agit d'une sous-chaîne :
if(typeof String.prototype.isSubstringOf === "undefined"){ String.prototype.isSubstringOf = function(str){ return str.indexOf(this) >= 0; }; }
Ensuite, parcourez a1 un par un et déterminez si l'élément actuel est une sous-chaîne de l'élément dans a2 If. alors, poussez-le dans un nouveau tableau.
Ensuite, lorsque la boucle se termine, le nouveau tableau est rempli.
Comment faire un tri lexicographique ? Devons-nous encore écrire des algorithmes ?
Ce n'est pas si compliqué. Le tri intégré de JavaScript est l'ordre du dictionnaire par défaut.
Ensuite, il suffit de trier directement le nouveau tableau et de le retourner !
function inArray(array1,array2){ var newArray = []; for(var i=0;i<array1.length;i++){ var temp = array1[i]; if(temp){ for(var j=0;j<array2.length;j++){ if(temp.isSubstringOf(array2[j])){ newArray.push(temp); break; } } } } return newArray.sort(); }
Ce qui précède est une question JavaScript intéressante : qu'est-ce qu'il y a dedans ? Pour plus de contenu connexe, veuillez prêter attention au site Web PHP chinois (www.php.cn) !