Si está buscando ordenar cadenas en orden alfabético en lugar de números, aquí hay un problema de muestra y su solución.
Ejemplo Problema: matriz de matrices (finalArray) con la primera entrada de una ruta de la carpeta y segunda entrada el nombre de archivo; ordene para que la matriz esté organizada por carpeta primero, y dentro de carpetas idénticas, por nombre de archivo.
E.g.después de la clasificación que espera:
[['folder1', 'abc.jpg'],
['folder1', 'xyz.jpg'],
['folder2', 'def.jpg'],
['folder2', 'pqr.jpg']]
Consulte Array.prototype.sort() - compareFunction
finalArray.sort((x: any, y: any): number => {
const folder1: string = x[0].toLowerCase();
const folder2: string = y[0].toLowerCase();
const file1: string = x[1].toLowerCase();
const file2: string = y[1].toLowerCase();
if (folder1 > folder2) {
return 1;
} else if (folder1 === folder2 && file1 > file2) {
return 1;
} else if (folder1 === folder2 && file1 === file2) {
return 0;
} else if (folder1 === folder2 && file1 < file2) {
return -1;
} else if (folder1 < folder2) {
return -1;
}
});
Tenga en cuenta, "Z" viene antes de "a" (mayúsculas en primer lugar según punto de código Unicode) que es por eso que tengo toLowerCase(). El problema que la implementación anterior no resuelve es que "10abc" vendrá antes que "9abc".
one-liner 'data.sort (function (x, y) {return x.count - y.count || x.year - y.year;});' –
@LucaSteeb su solución funcionó como un campeón y salvó mi día –
@cdhowie tienes razón, de hecho necesito entender mejor cómo funcionan los algoritmos de clasificación. Eliminaré mis comentarios, gracias. –