Heim  >  Artikel  >  Web-Frontend  >  JavaScript implementiert die Suche nach in unterschiedlicher Reihenfolge angeordneten Zeichenfolgen in einem Array_Javascript-Tipps

JavaScript implementiert die Suche nach in unterschiedlicher Reihenfolge angeordneten Zeichenfolgen in einem Array_Javascript-Tipps

WBOY
WBOYOriginal
2016-05-16 16:35:151245Durchsuche

Anforderungsbeschreibung: Finden Sie die Array-Elemente einer Reihe von Zeichenfolgen, die in unterschiedlicher Reihenfolge aus einer Reihe von Arrays angeordnet sind. Angenommen, es gibt ein solches Array:

Code kopieren Der Code lautet wie folgt:

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

Das zu findende Ergebnis ist:

Code kopieren Der Code lautet wie folgt:

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

Der entscheidende Punkt besteht darin, festzustellen, ob eine Reihe von Zeichenfolgen nur eine unterschiedliche Reihenfolge der Zeichen aufweist. Solange der gesamte Schlüsselpunkt gelöst ist, ist alles andere einfach zu handhaben.

Methode 1:

Code kopieren Der Code lautet wie folgt:

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

for( ; i < arrLength; i ){
Item = arr[i];
         strLength = item.length;
         num = 0;

                         // Einzelne Zeichen in Unicode-Kodierung konvertieren
// Berechnen Sie die Summe der Codes
for( j = 0; j < strLength; j ){
              num = item.charCodeAt( j );
                                                                
If( !firstItem ){
                1stItem = item;
               obj[num].push(item);
}
// Prüfen Sie, ob das erste Zeichen der hinzuzufügenden Zeichenfolge
ist // Erscheint in einer anderen Zeichenfolge, um die folgende Situation zu vermeiden
// ['ad', 'da', 'bc']
           else if( ~firstItem.indexOf(item.charAt(0)) ){
               obj[num].push(item);
}
}

for( name in obj ){
console.log( obj[name] );
}
};

Methode 1 durchläuft jedes Zeichen in der Zeichenfolge, konvertiert dann das einzelne Zeichen in die Unicode-Kodierung und berechnet die Summe der Kodierungen. Die Kodierungssumme von abcd und bdca ist konsistent. Verwenden Sie abschließend die Codierung und den Schlüssel als Objekt, um die Codierung und die konsistente Zeichenfolge zu speichern.

Methode 1 Es ist zu beachten, dass die Unicode-Kodierung der Zeichenfolgen „ad“ und „bc“ identisch ist. Zu diesem Zeitpunkt ist eine zusätzliche Beurteilung erforderlich, um festzustellen, ob das erste Zeichen in einer Zeichenfolge in der anderen Zeichenfolge vorkommt . Es muss nur in einer Zeichenfolge erscheinen.

Methode 2:

Code kopieren Der Code lautet wie folgt:

var stringClassify = function(){
var arrLength = arr.length,
         obj = {},
i = 0,
num, item, name, strArr, newStr;

for( ; i < arrLength; i ){
Item = arr[i];

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

If( !obj[newStr] ){
                obj[ newStr ] = [];
}

         obj[ newStr ].push( item );
}

for( name in obj ){
console.log( obj[name] );
}
};

Methode 2 besteht darin, die Zeichenfolge in ein Array umzuwandeln und das Array dann nach der Sortierung zu abcd zu sortieren. Verwenden Sie die sortierte Zeichenfolge als Schlüssel des Objekts, um die Zeichenfolgen mit derselben Sortierung zu speichern.

Tatsächlich besteht das Prinzip beider Methoden darin, Zeichen in die Unicode-Kodierung umzuwandeln, aber Methode 1 ist eine explizite Konvertierung, während die in Methode 2 verwendete Sortierung implizit konvertiert wird.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn