Anforderung Beschreibung: Finden Sie ein Array -Element einer Reihe von Zeichenfolgen, die in verschiedenen Ordnungen aus einer Reihe von Arrays angeordnet sind. Wenn es ein Array wie dieses gibt:
Die Codekopie lautet wie folgt:
['ABCD', 'Hallo', 'Bdca', 'Olleh', 'Cadb', 'NBA', 'ABN', 'ABC']
Die Ergebnisse sind:
Die Codekopie lautet wie folgt:
['ABCD', 'BDCA', 'CADB']]
Anschließend besteht der entscheidende Punkt hier darin, festzustellen, ob ein Satz von Zeichenfolgen nur eine andere Reihenfolge von Zeichen ist. Solange der gesamte Schlüsselpunkt gelöst ist, ist es einfacher zu tun.
Methode 1:
Die Codekopie lautet wie folgt:
var stringClassify = function (arr) {
var arrlength = arr.length,
obj = {},
i = 0,
Num, Element, Name, FirstItem, Strlength;
für (; i <Arrlength; i ++) {
item = arr [i];
strlength = item.length;
Num = 0;
// einzelne Zeichen in Unicode -Codierung umwandeln
// die Codierung abrufen und berechnen
für (j = 0; j <strlength; j ++) {
num += item.charCodeat (j);
}
if (! FirstItem) {
FirstItem = item;
obj [num] .push (item);
}
// Überprüfen Sie, ob das erste Zeichen der Zeichenfolge hinzugefügt wird, ob die
// erscheinen in einer anderen Zeichenfolge, um die folgenden zu vermeiden
// ['ad', 'da', 'bc']
else if (~ FirstItem.indexof (item.charat (0))) {
obj [num] .push (item);
}
}
für (Name in obj) {
console.log (obj [name]);
}
};
Methode 1 verwendet das Durchqueren jedes Zeichens in der Zeichenfolge und wandelt dann ein einzelnes Zeichen in Unicode -Codierung und die Durchführung der Summierung der Codierungen um. Die Codierungssummen von ABCD und BDCA werden konsistent sein. Verwenden Sie schließlich das Codierte und Schlüssel als Objekt, um die codierte und konsistente Zeichenfolge zu speichern.
Methode 1 Es ist zu beachten, dass die Unicode -Codierung der Zeichenfolge "AD" und "BC" gleich ist. Zu diesem Zeitpunkt müssen Sie ein zusätzliches Urteil hinzufügen, um festzustellen, ob das erste Zeichen in einer Zeichenfolge in einer anderen Zeichenfolge erschienen ist.
Methode 2:
Die Codekopie lautet wie folgt:
var StringClassify = function () {
var arrlength = arr.length,
obj = {},
i = 0,
Num, Artikel, Name, Strarr, Newstr;
für (; i <Arrlength; i ++) {
item = arr [i];
Strarr = arr [i] .Split ('');
Strarr.Sort ();
NewStr = Strarr.Join ('');
if (! obj [newstr]) {
OBJ [NewStr] = [];
}
OBJ [NewStr] .Push (Artikel);
}
für (Name in obj) {
console.log (obj [name]);
}
};
Methode 2 besteht darin, die Zeichenfolge in ein Array umzuwandeln und dann das Array zu sortieren. ABCD und BDCA werden nach dem Sortieren mit Sortier ABCD. Verwenden Sie die gut geordnete Zeichenfolge als Schlüssel des Objekts, um die konsequent sortierte Zeichenfolge zu speichern.
Tatsächlich besteht das Prinzip der beiden Methoden darin, Zeichen in Unicode -Codierung umzuwandeln. Methode 1 ist jedoch eine explizite Konvertierung, während die in Methode 2 verwendete Sortierung implizit konvertiert wird.