Description des exigences: Trouvez un élément de tableau d'un ensemble de chaînes disposées dans différents ordres d'un ensemble de tableaux. S'il y a un tableau comme celui-ci:
La copie de code est la suivante:
['ABCD', 'Hello', 'BDCA', 'OLLEH', 'CADB', 'NBA', 'ABN', 'ABC']
Les résultats à trouver sont:
La copie de code est la suivante:
['ABCD', 'BDCA', 'CADB']
Ensuite, le point clé ici est de déterminer si un ensemble de chaînes n'est qu'un ordre de caractères différent. Tant que le point clé entier est résolu, il sera plus facile à faire.
Méthode 1:
La copie de code est la suivante:
var stringClassify = function (arr) {
var arrrlength = arr.length,
obj = {},
i = 0,
num, item, nom, premierItem, strLength;
pour (; i <arrrlength; i ++) {
item = arr [i];
strLength = item.length;
num = 0;
// convertir des caractères uniques en codage Unicode
// récupérer et calculer le codage
pour (j = 0; j <strLength; j ++) {
num + = item.charcodeat (j);
}
if (! FirstItem) {
FirstItem = item;
obj [num] .push (item);
}
// Vérifiez si le premier caractère de la chaîne à ajouter est de savoir si le
// apparaît dans une autre chaîne pour éviter ce qui suit
// ['ad', 'da', 'bc']
else if (~ FirstItem.Indexof (item.charat (0))) {
obj [num] .push (item);
}
}
pour (nom dans obj) {
console.log (obj [name]);
}
};
La méthode 1 utilise la traversée de chaque caractère dans la chaîne, puis la conversion d'un seul caractère en codage Unicode et effectuant une somme des codages. Les sommes d'encodage d'ABCD et de BDCA seront cohérentes. Enfin, utilisez la clé codée et l'objet pour enregistrer la chaîne codée et cohérente.
Méthode 1 Il convient de noter que le codage Unicode de la chaîne "AD" et "BC" est le même. Pour le moment, vous devez ajouter un jugement supplémentaire pour détecter si le premier caractère d'une chaîne est apparu dans une autre chaîne.
Méthode 2:
La copie de code est la suivante:
var stringClassify = function () {
var arrrlength = arr.length,
obj = {},
i = 0,
Num, article, nom, Strarr, Newstr;
pour (; i <arrrlength; i ++) {
item = arr [i];
strarr = arr [i] .split ('');
Strarr.Sort ();
newstr = starr.join ('');
if (! Obj [newstr]) {
obj [newstr] = [];
}
obj [newstr] .push (article);
}
pour (nom dans obj) {
console.log (obj [name]);
}
};
La méthode 2 consiste à convertir la chaîne en un tableau, puis à trier le tableau. ABCD et BDCA deviendront ABCD après l'avoir trié avec le tri. Utilisez la chaîne bien ordonnée comme la clé de l'objet pour enregistrer la chaîne cohérente triée.
En fait, le principe des deux méthodes est de convertir des caractères en codage Unicode. Cependant, la méthode 1 est une conversion explicite, tandis que le tri de tri utilisé dans la méthode 2 sera implicitement converti.