Maison  >  Article  >  interface Web  >  JavaScript implémente la recherche de chaînes disposées dans différents ordres dans un tableau_javascript

JavaScript implémente la recherche de chaînes disposées dans différents ordres dans un tableau_javascript

WBOY
WBOYoriginal
2016-05-16 16:35:151248parcourir

Description de l'exigence : recherchez les éléments du tableau d'un ensemble de chaînes disposées dans des ordres différents à partir d'un ensemble de tableaux. Supposons qu'il existe un tel tableau :

Copier le code Le code est le suivant :

[ 'abcd', 'bonjour', 'bdca', 'olleh', 'cadb', 'nba', 'abn', 'abc']

Le résultat à trouver est :

Copier le code Le code est le suivant :

[ 'abcd', 'bdca', 'cadb' ]

Le point clé ici est de déterminer si un ensemble de chaînes a uniquement un ordre de caractères différent. Tant que l'ensemble du point clé est résolu, tout le reste sera facile à gérer.

Méthode 1 :

Copier le code Le code est le suivant :

var stringClassify = function( arr ){
var arrLength = arr.length,
         obj = {},
je = 0,
            num, item, name, firstItem, strLength;

pour( ; je < arrLength; je ){
Article = arr[i];
         strLength = item.length;
         num = 0;

                         // Convertir des caractères uniques en codage Unicode
// Calculer la somme des codes
pour( j = 0; j < strLength; j ){
              num = item.charCodeAt( j );
                                                                  
Si( !firstItem ){
                1stItem = article ;
               obj[num].push(item);
>
// Vérifiez si le premier caractère de la chaîne à ajouter est
// Apparaît dans une autre chaîne pour éviter la situation suivante
// ['ad', 'da', 'bc']
           else if( ~firstItem.indexOf(item.charAt(0)) ){
               obj[num].push(item);
>
>

pour (nom dans obj){
console.log( obj[nom]);
>
};

La méthode 1 parcourt chaque caractère de la chaîne, puis convertit le caractère unique en codage Unicode et calcule la somme des codages. La somme de codage de abcd et bdca sera cohérente. Enfin, utilisez l'encodage et la clé comme objet pour enregistrer l'encodage et la chaîne cohérente.

Méthode 1 Il convient de noter que le codage Unicode des chaînes « ad » et « bc » est le même. À ce stade, un jugement supplémentaire est nécessaire pour détecter si le premier caractère d'une chaîne apparaît dans l'autre chaîne. . Il suffit qu'il apparaisse dans une chaîne.

Méthode 2 :

Copier le code Le code est le suivant :

var stringClassify = fonction(){
var arrLength = arr.length,
         obj = {},
je = 0,
num, élément, nom, strArr, newStr;

pour( ; je < arrLength; je ){
Article = arr[i];

         strArr = arr[i].split( '' );
        strArr.sort();
newStr = strArr.join( '' );

Si( !obj[newStr] ){
                obj[ newStr ] = [];
>

         obj[ newStr ].push( élément );
>

pour (nom dans obj){
console.log( obj[nom]);
>
};

La méthode 2 consiste à convertir la chaîne en tableau, puis à trier le tableau abcd et bdca deviendra abcd après le tri. Utilisez la chaîne triée comme clé de l'objet pour enregistrer les chaînes avec le même tri.

En fait, le principe des deux méthodes est de convertir les caractères en encodage Unicode, mais la méthode 1 est une conversion explicite, tandis que le tri utilisé dans la méthode 2 sera converti implicitement.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn