Descripción del requisito: Encuentre un elemento de matriz de un conjunto de cadenas dispuestas en diferentes órdenes de un conjunto de matrices. Si hay una matriz como esta:
La copia del código es la siguiente:
['ABCD', 'Hola', 'BDCA', 'olleh', 'cadb', 'nba', 'abn', 'ABC']
Los resultados que se encuentran son:
La copia del código es la siguiente:
['ABCD', 'BDCA', 'CADB']
Luego, el punto clave aquí es determinar si un conjunto de cadenas es solo un orden diferente de caracteres. Mientras se resuelva todo el punto clave, será más fácil de hacer.
Método 1:
La copia del código es la siguiente:
var stringClassify = function (arr) {
var arrlength = arr.length,
obj = {},
i = 0,
num, elemento, nombre, primeritem, strlength;
para (; i <arrlength; i ++) {
item = arr [i];
strlength = item.length;
num = 0;
// convertir caracteres individuales en codificación unicode
// buscar y calcular la codificación
para (j = 0; j <strlength; j ++) {
num += item.charcodeat (j);
}
if (! FirstItem) {
firstitem = item;
obj [num] .push (elemento);
}
// verifique si el primer carácter de la cadena a agregar es si el
// aparece en otra cadena para evitar lo siguiente
// ['AD', 'Da', 'BC']
else if (~ firstitem.indexof (item.charat (0))) {
obj [num] .push (elemento);
}
}
para (nombre en obj) {
console.log (obj [nombre]);
}
};
El método 1 utiliza atravesar cada personaje en la cadena, y luego convertir un solo carácter en una codificación unicode y realizar suma de los codificaciones. Las sumas de codificación de ABCD y BDCA serán consistentes. Finalmente, use la clave codificada y el objeto para guardar la cadena codificada y consistente.
Método 1 debe tenerse en cuenta que la codificación unicode de la cadena "AD" y "BC" es la misma. En este momento, debe agregar un juicio adicional para detectar si el primer carácter en cualquier cadena ha aparecido en otra cadena.
Método 2:
La copia del código es la siguiente:
var stringClassify = function () {
var arrlength = arr.length,
obj = {},
i = 0,
num, artículo, nombre, Strarr, Newstr;
para (; i <arrlength; i ++) {
item = arr [i];
strarr = arr [i] .split ('');
strarr.sort ();
Newstr = Strarr.Join ('');
if (! obj [newstr]) {
obj [newstr] = [];
}
obj [Newtr] .push (ítem);
}
para (nombre en obj) {
console.log (obj [nombre]);
}
};
El método 2 es convertir la cadena en una matriz y luego ordenar la matriz. ABCD y BDCA se convertirán en ABCD después de ordenarlo con clasificación. Use la cadena bien ordenada como la clave del objeto para guardar la cadena ordenada consistentemente.
De hecho, el principio de los dos métodos es convertir caracteres en una codificación unicode. Sin embargo, el método 1 es una conversión explícita, mientras que el tipo de clasificación utilizado en el Método 2 se convertirá implícitamente.